Parallele Zuweisungen in Ruby
Nachdem ich mich jetzt schon länger damit beschäftigt habe, kann ich nur eins sagen: Ruby rockt - ob mit oder ohne Schienen, das ist einfach eine koole Programmiersprache. Ein Feature was das Coderherz heute höher schlagen ließ: Parallelzuweisungen.
Nehmen wir an, wir wollen die Werte zweier Variablen gegeneinander vertauschen - dafür braucht man herkömmlicherweise eine dritte Temporärvariable:
a = 1
b = 2
temp = a
a = b
b = temp
In Ruby lässt sich das aber mit einem schicken Einzeiler lösen:
`a, b = b, a`
Die Rechtswerte werden vor ihrer Zuweisung von links nach rechts ausgewertet und anschließend auch in dieser Reihenfolge an die Variablen auf der linken Seite zugewiesen.
a = 3
b, c = (a += 1), (a += 2)
-> a = 6, b = 4, c = 6
Gibt es mehr Links- als Rechtswerte, werden die verbleibenden Linkswerte gleich nil gesetzt. Gibt es mehr Rechts- als Linkswerte, werden die überbleibenden Rechtswerte ignoriert. Wenn es nur einen Linkswert, jedoch mehrere Rechtswerte gibt, so werden sie dem Linkswert als Array zugewiesen.
So nice… :)