3

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

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

结果是

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

为什么?

4

3 回答 3

5

逗号使 ruby​​ 认为您将进行并行赋值,其中 b 和另一个变量将通过相同的表达式进行赋值,如下所示:

b, c = 1, 2

结果 b == 1 和 c == 2。

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

于 2012-07-25T01:10:51.713 回答
2

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

b,c,d = 1,2,3

你明白我的意思

于 2012-07-25T01:10:17.437 回答
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

于 2012-07-25T13:00:56.070 回答