如何在Ruby中将多个块传递给方法?

10
我可以向方法传递多个参数和一个块参数。但是当我尝试传递超过一个块时,它显示错误。我想知道如何解决这个问题?
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
1个回答

16

您可以使用 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' }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接