假设我已经通过
构建了一个可调用对象数组callables = []
callables << block1
callables << block2
callables << block3
callables << block4
后来我想打电话给这些街区。我明白我能做到
callables.each { |block| block.call }
但我想知道我是否可以通过调用类似
之类的东西来简化它callables.each :call
我已经尝试过上面的代码但得到了ArgumentError。 ruby是否支持这种语法?
答案 0 :(得分:3)
你应该尝试:
callables.each &:call
Array#each
不接受任何论据。这就是为什么当你写callables.each :call
时,:call
符号传递给方法each
作为参数。但是当:call
加上&
作为前缀时,each
知道你正在给它一个块作为参数,所以它会起作用。