我想在要重用的变量中存储“代码块”,例如:
block = do
|test| puts test
end
3.upto(8) block
有人能告诉我我在做什么这么显然是错的吗? (或者,如果这是不可能的)
答案 0 :(得分:29)
在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") }
它们基本上是非常相似的方法,有细微差别。
最后,可能有更优雅的方式来完成我所概述的内容,很高兴听到任何人有更好的方式。希望这会有所帮助。