Warum erlaubt Ruby nur das Überladen bestimmter Operatoren?

7

In Ruby sind Operatoren wie in vielen anderen OO-Programmiersprachen überladbar. Es können jedoch nur bestimmte Zeichenoperatoren überladen werden.

Diese Liste ist möglicherweise unvollständig, aber hier sind einige der Operatoren, die nicht überladen werden können:

%Vor%     
Tony Pitale 18.09.2008, 14:10
quelle

5 Antworten

11

Methoden sind überladbar, diese sind Teil der Sprachsyntax.

    
Farrel 18.09.2008, 14:14
quelle
12

Ja. Betreiber sind nicht überlastbar. Nur Methoden.

Einige Betreiber sind nicht wirklich. Sie sind Zucker für Methoden. Also ist 5 + 5 wirklich 5.+(5) und foo[bar] = baz ist wirklich foo.[]=(bar, baz) .

    
Jordi Bunster 18.09.2008 14:16
quelle
6

In Ruby 1.9 ist der Operator ! auch eine Methode und kann überschrieben werden. Dies lässt nur && und || und ihre Pendants mit der niedrigsten Priorität and und or .

Es gibt auch einige andere "kombinierte Operatoren", die nicht überschrieben werden können, z. a != b ist tatsächlich !(a == b) und a += b ist tatsächlich a = a+b .

    
Jörg W Mittag 20.09.2008 20:53
quelle
1

Und vergessen wir nicht << zum Beispiel:

%Vor%

entspricht dem Aufruf:

%Vor%     
Ryan Bigg 19.09.2008 00:11
quelle