Pourquoi Ruby n'autorise-t-il que certains opérateurs surchargés?
-
01-07-2019 - |
Question
En Ruby, comme dans de nombreux autres langages de programmation OO, les opérateurs sont surchargeables. Cependant, seuls certains opérateurs de caractères peuvent être surchargés.
Cette liste est peut-être incomplète, mais voici quelques opérateurs qui ne peuvent pas être surchargés:
!, not, &&, and, ||, or
La solution
Les méthodes sont surchargeables, elles font partie de la syntaxe du langage.
Autres conseils
Oui. Les opérateurs ne sont pas surchargeables. Seules les méthodes.
Certains opérateurs ne le sont pas vraiment. Ils sont du sucre pour les méthodes. Donc 5 + 5
est vraiment 5.+(5)
, et foo[bar] = baz
est vraiment foo.[]=(bar, baz)
.
Dans Ruby 1.9, l'opérateur !
est en réalité une méthode et peut être remplacé. Cela ne laisse que &&
et ||
et leurs homologues de faible priorité and
et or
.
Il existe également d'autres & opérateurs combinés & "; cela ne peut pas être annulé, par exemple a != b
est en fait !(a == b)
et a += b
en fait a = a+b
.
Et n'oublions pas <<
par exemple:
string = "test"
string << "ing"
équivaut à appeler:
string.<<("ing")