2012-02-25 13 views
7

Potrafię przekazać wiele parametrów i wreszcie jeden parametr bloku do metody. Ale pokazuje błąd, gdy próbuję przekazać więcej niż jeden blok. Chcę wiedzieć, jak można to zrobić?Jak przekazać wiele bloków do metody w ruby?

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

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

Ale poniżej definicji daje błąd

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

Odpowiedz

12

Można użyć Proc:

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

xyz(3, Proc.new { puts 'foo' }) { puts 'bar' } 
Powiązane problemy