带括号和 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
。
我知道了:
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
。