2012-02-25 5 views
7

Tôi có thể chuyển nhiều tham số và tham số khối cuối cùng vào phương thức. Nhưng nó cho thấy lỗi khi tôi cố gắng vượt qua nhiều hơn một khối. Tôi muốn biết làm thế nào nó có thể được thực hiện?Làm thế nào để vượt qua nhiều khối để phương pháp trong ruby?

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

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

Nhưng dưới đây định nghĩa cho lỗi

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

Trả lời

12

Bạn có thể sử dụng Proc:

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

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