2008-09-18 10 views
7

En Ruby, como en muchos otros lenguajes de programación OO, los operadores se pueden cargar. Sin embargo, solo ciertos operadores de caracteres pueden estar sobrecargados.¿Por qué Ruby Only Permitting Certain Operator Overloading?

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

!, not, &&, and, ||, or 

Respuesta

11

métodos son sobrecargable, esas son parte de la sintaxis del lenguaje.

+1

Como mencionó Jorg en su respuesta, '!' Puede anularse. –

12

Sip. Los operadores no son sobrecargados. Solo métodos

Algunos operadores no son realmente. Son azúcar por métodos. Entonces 5 + 5 es realmente 5.+(5), y foo[bar] = baz es realmente foo.[]=(bar, baz).

1

Y no olvidemos acerca << por ejemplo:

string = "test" 
string << "ing" 

es lo mismo que llamar:

string.<<("ing") 
6

En Ruby 1.9, el operador ! es en realidad también un método y se puede anular. Esto solo deja && y || y sus contrapartes de baja precedencia and y or.

También hay otros "operadores combinados" que no se pueden anular, p. Ej. a != b es en realidad !(a == b) y a += b es en realidad a = a+b.