2010-10-25 34 views
5

Có lẽ điều này nghe có vẻ vô lý nhưng tôi tự hỏi liệu điều này có thể xảy ra với Ruby không? Về cơ bản tôi có một chức năng ...Chuyển toán tử đến một hàm?

def add a,b 
c = a + b 
return c 
end 

Tôi muốn để có thể vượt qua "+" hay cách khác điều hành ví dụ: "-" để chức năng để nó muốn được một cái gì đó giống như ...

def sum a,b,operator 
c = a operator b 
return c 
end 

là điều này có thể?

Trả lời

10

Có hai khả năng:

Đưa tên phương pháp/điều hành như một biểu tượng:

def sum a,b,operator 
a.send(operator, b) 
end 
sum 42, 23, :+ 

Hoặc giải pháp tổng quát hơn: Lấy một khối :

def sum a,b 
    yield a,b 
end 
sum 42, 23, &:+ 
+0

+1 để sử dụng tốt Biểu tượng # to_proc – Swanand

Các vấn đề liên quan