Gibt es eine Möglichkeit, mehrere Werte von der Methode zurückzugeben? Etwas wie das:
def someMethod()
return ["a", 10, SomeObject.new]
end
[a, b, c] = someMethod
def sumdiff(x, y)
return x+y, x-y
end
#=> nil
sumdiff(3, 4)
#=> [7, -1]
a = sumdiff(3,4)
#=> [7, -1]
a
#=> [7, -1]
a,b=sumdiff(3,4)
#=> [7, -1]
a
#=> 7
b
#=> -1
a,b,c=sumdiff(3,4)
#=> [7, -1]
a
#=> 7
b
#=> -1
c
#=> nil
>>
Aufforderung von irb verursachte Verrücktheit verschwindet .def foo_and_bar; ['foo', 'bar']; end
Ruby hat eine begrenzte Form der Destrukturierungsbindung:
Es hat auch eine begrenzte Form der Strukturierung binden:
Sie können diese beiden Formen folgendermaßen kombinieren:
Es gibt verschiedene andere Dinge, die Sie mit der Destrukturierung / Strukturierung von Bindungen tun können. Ich habe nicht mit dem splat-Operator (
*
) auf der rechten Seite gezeigt. Ich habe keine Verschachtelung gezeigt (mit Klammern). Ich habe nicht gezeigt, dass Sie Destructuring Bind in der Parameterliste eines Blocks oder einer Methode verwenden können.Hier ist nur eine Vorspeise:
quelle
Obwohl die Rückgabe mehrerer Werte oft nützlich ist, finde ich sie normalerweise als Zeiger auf eine neue Objektanforderung.
Das heißt, ich finde normalerweise, dass diese Rückgabewerte in Bedeutung / Kontext eng miteinander verbunden sind und als solche weitergegeben werden. In diesen Fällen würde ich also ein neues Objekt erstellen, um diese zusammenzubinden. Es ist ein bestimmter Code-Geruch, den ich zu erkennen gelernt habe.
quelle
chunk
würden solche Dinge nicht existieren. Ausgezeichnetes Prinzip. Code riecht tatsächlich. Mach weiter.Sie können dies erreichen, indem Sie auch ein Array zurückgeben, wie z
das scheint funktional äquivalent zu
quelle