Подтвердить что ты не робот

Как хранить блоки кода ruby

Я хочу сохранить "блок кода" в переменной, которую нужно повторно использовать, например:

block = do
|test| puts test
end

3.upto(8) block

Может кто-нибудь показать мне, что я делаю, очевидно, неправильно? (Или если это просто невозможно)

4b9b3361

Ответ 1

В Ruby существует много способов сделать это, одним из которых является использование Proc:

foo=Proc.new do |test|
  puts test
end

3.upto(8) { foo.call("hello world") }

Подробнее о Procs:

Обновление, вышеуказанный метод можно переписать следующим образом:

# 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") } 

Они в основном очень похожие методы, с небольшими различиями.

И, наконец, есть, наверное, более элегантные способы сделать то, что я изложил, быть хорошим, чтобы услышать от кого-либо с лучшим способом. Надеюсь, это поможет.