Perché Ruby consente solo il sovraccarico di determinati operatori
-
01-07-2019 - |
Domanda
In Ruby, come in molti altri linguaggi di programmazione OO, gli operatori sono sovraccaricabili.Tuttavia, solo alcuni operatori di caratteri possono essere sovraccaricati.
Questo elenco potrebbe essere incompleto, ma ecco alcuni degli operatori che non possono essere sovraccaricati:
!, not, &&, and, ||, or
Soluzione
I metodi sono sovraccaricabili, fanno parte della sintassi del linguaggio.
Altri suggerimenti
Sì.Gli operatori non sono sovraccaricabili.Solo metodi.
Alcuni operatori non lo sono davvero.Sono lo zucchero per i metodi.COSÌ 5 + 5
è davvero 5.+(5)
, E foo[bar] = baz
è davvero foo.[]=(bar, baz)
.
In Ruby 1.9, il !
l'operatore è in realtà anche un metodo e può essere sovrascritto.Questo lascia solo &&
E ||
e le loro controparti a bassa precedenza and
E or
.
Esistono anche altri "operatori combinati" che non possono essere sovrascritti, ad es. a != b
è effettivamente !(a == b)
E a += b
è effettivamente a = a+b
.
E non dimentichiamolo <<
Per esempio:
string = "test"
string << "ing"
è come chiamare:
string.<<("ing")