假设我通过执行构建了一个可调用对象数组
callables = []
callables << block1
callables << block2
callables << block3
callables << block4
稍后我想把这些块称为。我知道我可以做
callables.each { |block| block.call }
但我想知道我是否可以通过调用这样的东西来使它变得更简单
callables.each :call
我已经尝试了上面的代码,但得到了ArgumentError。ruby支持这种语法吗?
您应该尝试:
callables.each &:call
Array#each
不接受任何参数。这就是为什么在编写callables.each :call
、:call
时,符号作为参数传递给方法each
。但是,当您在:call
前面加上&
时,each
知道您正在给它一个块作为参数,所以它会起作用。