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

时间:2015-06-06 03:43:15

标签: ruby parallel-assignment

我明白了:

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

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

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

1 个答案:

答案 0 :(得分:9)

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

右侧的图例*是内联展开的,因此它等同于:

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

左侧的括号列表被视为嵌套赋值,因此它等同于:

x = 1
y, z = 2

3被弃用,z被分配给nil