25

我想将“代码块”存储在要重用的变量中,例如:

block = do
|test| puts test
end

3.upto(8) block

有人可以告诉我我做错了什么吗?(或者如果这是不可能的)

4

1 回答 1

37

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

它们基本上是非常相似的方法,有细微的差别。

最后,可能有更优雅的方式来做我所概述的事情,很高兴听到任何有更好方式的人的意见。希望这可以帮助。

于 2012-10-07T00:27:49.997 回答