2015-06-06 11 views

Antwort

9
x, (y, z) = 1, *[2, 3] 

Die Splat * auf der rechten Seite wird inline erweitert, ist es so entspricht:

x, (y, z) = 1, 2, 3 

Die eingeklammerten Liste auf der linken Seite als verschachtelte Zuordnung behandelt wird, ist es so entspricht:

x = 1 
y, z = 2 

3 wird verworfen, während znil zugewiesen wird.

+1

Gute Antwort. Und wenn 'x, (y, z), u = 1, * [2, 3]' dann 'x # => 1; y # => 2; z # => null; u # => 3'. –

+0

Ok, so hat Splat Vorrang vor den Klammern und die Klammern behandeln Werte in ihnen als eine Einheit –

+0

Ich glaube nicht, dass die Priorität hier relevant ist, da die Klammern und Splat auf gegenüberliegenden Seiten der Gleichheit sind. Der Schlüssel ist Yus Aussage, "Der Splat' '' auf der rechten Seite ... ". Die parallele Zuweisung bewirkt, dass "x" gleich "1", "(y, z)" gleich "2" usw. gesetzt wird, und wenn "(y, z) = 2", dann "y # =>" 2; z # => Null. –