摘自元编程第二版 101 页,第二版。 完整代码如下:
@setups = [proc{puts "one"}, proc{puts "two"}]
def each_setup(&block)
@setups.each do |setup|
block.call setup
end
end
each_setup do |setup|
setup.call
end
如何理解:
each_setup do |setup|
setup.call
end
中的 setup 和
def each_setup(&block)
@setups.each do |setup|
block.call setup
end
end
中的&block 的关系?
对这段代码产生迷糊是因为本身对块的理解不够,下面根据楼下的意见进行解释: 下面的两段代码是等价的:
each_setup do |setup|
setup.call
end
each_setup { |setup| setup.call }
参数&block 其实就是 { |setup| setup.call },那么 block 就是 proc { |setup| setup.call } 那么上面的 each_setup 的代码可以改成如下形式:
def each_setup(&block)
@setups.each do |setup|
proc{|setup| setup.call}.call setup
end
end