Ruby 称为 block 的集合

标签 ruby

假设我已经构建了一个可调用对象数组

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/

相关文章:

Ruby - 散列属性的 Setter 方法

ruby - 如何包含扩展类方法并正确引用类 var 的模块

ruby - 检查一个散列是否包含另一个散列

ruby-on-rails - #< session :0x00000112a617c0> 的未定义方法 `'

javascript - 哪个是检测客户端用户代理的更好方法?

ruby-on-rails - Gitorious Rots Ruby on Rails 错误

ruby - 没有足够的空间来安装 Ruby - Debian 7

ruby-on-rails - Ruby 源文件名与 `require` 冲突

mysql - 使用 MySQL 启动 Rails 服务器时出错

mysql - 如何使订单仅适用于非空记录但获取所有记录?