2010-10-25 76 views
5

也許這聽起來很荒謬,但我想知道這對Ruby有可能嗎?基本上,我有一個函數...將操作符傳遞給函數?

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

我希望能夠通過「+」或其他操作,例如「 - 」的功能,因此,它會是這樣的......

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

這是可能的嗎?

回答

10

兩種可能性:

採取的方法/操作名稱作爲符號:

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

或者更一般的解決辦法:取塊:

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

+1符號的很好用法#to_proc – Swanand 2010-10-25 12:06:27