Pregunta

En Ruby, como en muchos otros lenguajes de programación OO, los operadores están overloadable.Sin embargo, sólo ciertos caracteres de los operadores sobrecargados.

Esta lista puede estar incompleta pero, aquí están algunos de los operadores que no pueden ser sobrecargados:

!, not, &&, and, ||, or
¿Fue útil?

Solución

Los métodos son overloadable, aquellos que son parte de la sintaxis del lenguaje.

Otros consejos

Yep.Los operadores no son overloadable.Sólo los métodos.

Algunos operadores no son realmente.Son de azúcar para los métodos.Así 5 + 5 es realmente 5.+(5), y foo[bar] = baz es realmente foo.[]=(bar, baz).

En Ruby 1.9, la ! operador en realidad es también un método y puede ser anulada.Esto sólo deja && y || y su baja prioridad contrapartes and y or.

También hay algunos otros "combinado operadores" que no se puede anular, por ejemplo, a != b es en realidad !(a == b) y a += b es en realidad a = a+b.

Y no olvidemos << por ejemplo:

string = "test"
string << "ing"

es el mismo que el de llamar:

string.<<("ing")
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top