2010-07-26 11 views
24

Esiste un elenco di tutti gli operatori di ruby ​​che è possibile ignorare? (Non quelli che non possono!)elenco di operatori ruby ​​che possono essere sovrascritti/implementati

+0

** Il sovraccarico ** è l'uso dello stesso nome del metodo per diverse azioni, in cui il metodo è distinguibile solo dalla sua firma. In realtà non è possibile in Ruby. Sovrascrivere o ridefinire è il termine corretto qui. –

+0

Grazie per il dettaglio, @platzhirsch. Ho modificato la domanda. Strano come sia generalmente chiamato overloading dell'operatore, no? – aaaidan

+0

Beh, come me, può essere sempre pignolo riguardo all'uso dei termini e al loro significato :-) Dopotutto deriva da linguaggi come il C++, dove forse fa lo stesso, ma si basa su semantica diversa. –

risposta

31

Ecco a table of the Ruby operators.

Quelli che sono i metodi e sovraccaricabile sono:

[ ] [ ]= Element reference, element set 
** Exponentiation 
! ~ + -  Not, complement, unary plus and minus (method names for the last two are [email protected] and [email protected]) 
*/% Multiply, divide, and modulo 
+ -  Plus and minus 
>> << Right and left shift 
& Bitwise `and' 
^ |  Bitwise exclusive `or' and regular `or' 
<= < > >= Comparison operators 
<=> == === != =~ !~  Equality and pattern match operators (!= and !~ may not be defined as methods) 

Il tavolo era dalla Piccone libro del 2001, ma questo è lo stesso tavolo come nel libro Ruby 1.9 Pickaxe - alcun motivo per credere che questo set degli operatori infissi cambierà mai.

+0

Con "quelli che sono metodi e sovraccaricabili", suppongo tu intenda che uno può solo sovraccaricare gli operatori che sono metodi, no? Inoltre, mentre gli operatori "puri" non possono essere sovraccaricati, è possibile abusare di più parole chiave come parole (ad esempio 'definite?', 'Not',' or', 'begin') come nomi per nuovi metodi senza qualità infixy. – fny

+1

In realtà,! = E! ~ Può essere sovraccaricato/definito, anche se il vecchio piccone dice che non è possibile. Già nel 2008 c'era un reclamo in merito alla mailing list e Matz ha commentato che Ruby era flessibile. –

Problemi correlati