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
risposta
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.
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
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. –
** 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. –
Grazie per il dettaglio, @platzhirsch. Ho modificato la domanda. Strano come sia generalmente chiamato overloading dell'operatore, no? – aaaidan
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. –