我希望能够将一个"代码块"存储在变量中以便重用,类似于:
block = do
|test| puts test
end
3.upto(8) block
有人能向我展示我到底做错了什么吗?(或者这根本不可能)
在 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") }
这两种方法基本上非常相似,只是有一些细微的差别。
最后,可能有更加优雅的方式来实现我所描述的内容,希望有更好方法的人来分享。希望这可以帮助到你。