¿Por Qué Ruby Sólo Permiten Que Ciertos Sobrecarga De Operadores
-
01-07-2019 - |
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
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")