Ответ 1
В Ruby существует много способов сделать это, одним из которых является использование Proc:
foo=Proc.new do |test|
puts test
end
3.upto(8) { foo.call("hello world") }
Подробнее о Procs:
- http://www.reactive.io/tips/2008/12/21/understanding-ruby-blocks-procs-and-lambdas
- http://www.skorks.com/2010/05/ruby-procs-and-lambdas-and-the-difference-between-them/
Обновление, вышеуказанный метод можно переписать следующим образом:
# using lower-case **proc** syntax, all on one line
foo = proc { |test| puts test }
3.upto(8) { foo.call("hello world") }
# using lambda, just switch the method name from proc to lambda
bar = lambda { |test| puts test }
3.upto(8) { bar.call("hello world") }
Они в основном очень похожие методы, с небольшими различиями.
И, наконец, есть, наверное, более элегантные способы сделать то, что я изложил, быть хорошим, чтобы услышать от кого-либо с лучшим способом. Надеюсь, это поможет.