带括号和 splat 运算符的并行赋值

Parallel assignment with parentheses and splat operator

我知道了:

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

x # => 1
y # => 2
z # => nil

我想知道为什么 z 的值为 nil

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

右侧的 splat * 是内联展开的,所以相当于:

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

左边带括号的列表被视为嵌套赋值,所以等价于:

x = 1
y, z = 2

3 被丢弃,而 z 被分配给 nil