2010-08-24 15 views

Répondre

13

Vous ne pouvez pas passer plusieurs blocs que façon, mais vous pouvez passe plusieurs proc ou lambda objets:

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> 
+1

Ok je vois. Je pourrais aussi utiliser lambda {puts "bla"} je suppose. Je suppose que l'essentiel est que je ne peux utiliser et bloquer au plus une fois dans une définition de méthode. Merci. – rui

1

syntaxe est beaucoup plus mignon dans Ruby 1.9:

foo ->{puts :one}, ->{puts :two}