Warum nicht zulässt Rubin nur bestimmte Überladen von Operatoren
-
01-07-2019 - |
Frage
In Ruby, wie in vielen anderen OO Programmiersprachen, sind die Betreiber überladbaren. Allerdings können nur bestimmte Zeichen Betreiber überlastet werden.
Diese Liste ist unvollständig, aber hier sind einige der Betreiber, die nicht überlastet werden können:
!, not, &&, and, ||, or
Lösung
Methoden sind überladbaren, die nicht Teil der Sprachsyntax sind.
Andere Tipps
Ja. Die Betreiber sind nicht überladbaren. Nur Methoden.
Einige Betreiber sind nicht wirklich. Sie sind Zucker für Methoden. So 5 + 5
ist wirklich 5.+(5)
und foo[bar] = baz
ist wirklich foo.[]=(bar, baz)
.
In Ruby 1.9 ist die !
Betreiber tatsächlich auch ein Verfahren und außer Kraft gesetzt werden können. Dies lässt nur &&
und ||
und ihre Low-Vorrang Pendants and
und or
.
Es gibt auch einige andere „kombinierte Operatoren“, die außer Kraft gesetzt werden können, z.B. a != b
ist eigentlich !(a == b)
und a += b
ist eigentlich a = a+b
.
Und nicht etwa <<
zum Beispiel vergessen:
string = "test"
string << "ing"
ist der gleiche wie der Aufruf:
string.<<("ing")