是否可以将多个块传递给Ruby中的方法?

rui*_*rui 7 ruby block codeblocks

就像是:

def foo(&b1, &b2)
  b1.call
  b2.call
end

foo() { puts "one" } { puts "two" }
Run Code Online (Sandbox Code Playgroud)

Mar*_*off 13

您不能以这种方式传递多个块,但您可以传递多个proclambda对象:

irb(main):005:0> def foo(b1, b2)
irb(main):006:1>   b1.call
irb(main):007:1>   b2.call
irb(main):008:1> end
=> nil
irb(main):009:0> foo(Proc.new {puts 'one'}, Proc.new {puts 'two'})
one
two
=> nil
irb(main):010:0>
Run Code Online (Sandbox Code Playgroud)

  • 好的我明白了。我也可以使用 lambda { puts "bla" } 我想。我想最重要的是,在方法定义中我最多只能使用 &block 一次。谢谢。 (2认同)