变量赋值“x,= 1,2”如何在Ruby中工作?

时间:2012-07-25 00:59:03

标签: ruby syntax variable-assignment

执行以下代码后变量a和b的值:

a = 1, 2, 3 
b, = 1, 2, 3

结果是

 a =  [1, 2, 3]
 b =  1

为什么?

3 个答案:

答案 0 :(得分:5)

逗号让ruby认为你要进行并行分配,其中b和另一个变量将通过相同的表达式分配,如下所示:

b, c = 1, 2

结果是b == 1和c == 2.

所以这里ruby将右边的第一个值赋给b,并期望将右边的下一个值赋给另一个变量,但是找不到,所以它会丢弃剩下的值。

答案 1 :(得分:2)

这是ruby的并行分配。 a = 1, 2, 3表示将数组[1, 2, 3]添加到ab, = 1, 2, 3表示将1添加到b,将2添加到?和3到?如果你试试

b,c,d = 1,2,3

你明白我的意思

答案 2 :(得分:0)

在Ruby中,您可以进行并行分配。例如:a,b = 1,2表示a == 1,b == 2 在这个例子中:a,b,= 1,2,3。a == 1和b == 2并且没有变量来赋值3。 在这个例子中:a,b = 1.a == 1,b是nil