ruby - 如何将多个 block 传递给 ruby​​ 中的方法?

标签 ruby closures

<分区>

我可以将多个参数和最后一个 block 参数传递给方法。但是当我试图通过一个以上的 block 时它会显示错误。我想知道如何实现?

def abc(x, &a)
  x.times { a.call("hello") }
end

abc(3) {|a| puts "#{a} Sana"}
abc(1, &proc{|a| puts "#{a} Sana"})

但是下面的定义给出了错误

def xyz(x, &a, &b)
  puts x
  a.call
  b.call
end

最佳答案

你可以使用Proc:

def xyz(x, a, &b)
  puts x
  a.call
  b.call
end

xyz(3, Proc.new { puts 'foo' }) { puts 'bar' }

# or simpler

xyz(3, proc { puts 'foo' }) { puts 'bar' }

关于ruby - 如何将多个 block 传递给 ruby​​ 中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9444918/

相关文章:

javascript - 为什么以及何时未执行的闭包可以捕获 JavaScript 中的外部变量?

javascript - 在 javascript 函数中获取 ruby​​ 数组的每个 i 元素(转义和取消转义)?

ruby-on-rails - 重写多个内联返回

ruby-on-rails - 使用 FakeWeb 进行 Mechanize

Ruby:无法从另一个模块访问一个模块的方法

unit-testing - 使用 Groovy 模拟 Jenkins 管道

javascript - jQuery Javascript 将父对象传递为 this

ruby - 使用 Ruby 的 TCPSocket 类发送原始字节数组的最简单方法

Javascript 对象创建最佳实践

循环内的 JavaScript 闭包 – 简单的实际示例