假设我已经构建了一个可调用对象数组
callables = []
callables << block1
callables << block2
callables << block3
callables << block4
稍后我想调用这些 block 。我明白我能做到
callables.each { |block| block.call }
但我想知道我是否可以通过调用类似的东西使它变得更简单
callables.each :call
我已经尝试了上面的代码但是得到了 ArgumentError。 ruby 支持这种语法吗?
最佳答案
你应该试试:
callables.each &:call
Array#each
不接受任何参数。这就是为什么当您编写 callables.each :call
时,:call
符号将作为参数传递给方法 each
。但是当你在 :call
前面加上 &
时,each
知道你给它一个 block 作为参数,所以它会起作用。
关于Ruby 称为 block 的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29397535/