2015-04-20 17 views
5
x + y 

ist syntaktischer Zucker fürWas ist das Methodensymbol für + = in Ruby?

x.send(:+, y) 

Was dies ein für syntaktischen Zucker ist?

x += y 

Ich habe

versucht
x.send(:+=, y) 

, aber es funktioniert nicht

+1

Aww, könnte ich korrigiert werden, aber ich glaube nicht, dass es einen gibt. – hirolau

+0

'+ =' ist keine Methode, es ist sprachweit syntaktischer Zucker für "erhöhen und zuweisen". Das Überschreiben von '+' wirkt sich automatisch auf '+ =' aus. – mudasobwa

+2

Es ist eine abgekürzte Aufgabe: http://ruby-doc.org/core-2.2/doc/syntax/assignment_rdoc.html –

Antwort

5

Es ist keine Methode ist. Es ist ein kurzer Weg (syntaktischer Zucker) zum Schreiben folgender:

x = 1 
#=> 1 
x += 1 # same as x = x + 1 
#=> 2 
+0

Gibt es eine = Methode? x.send (: =, 1) funktioniert auch nicht. Ich dachte, alles in Ruby ist eine Methode? – syclee

+3

@Syclee '=' ist ein Zuweisungsoperator und es ist keine Methode in Ruby –

+1

@Syclee: Wie denken Sie, dass das funktionieren sollte? Sie erstellen 'x' durch' x = ... '. Wie können Sie den Methodenaufruf an etwas senden, das noch nicht erstellt wurde? –