2010-10-25 24 views
5

Quizás esto suene ridículo, pero me pregunto si esto es posible con Ruby. Tengo básicamente una función ...¿Pasar un operador a una función?

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

me gustaría ser capaz de pasar el signo "+" u otro operador, por ejemplo "-" para la función de modo que sería algo así como ...

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

¿Esto es posible?

Respuesta

10

dos posibilidades:

tomar el nombre método/operador como un símbolo:

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

O la solución más general: Tomar un bloque :

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

+1 para un buen uso de Symbol # to_proc – Swanand

Cuestiones relacionadas