Ruby在一行中单次分配变量时的奇怪行为

时间:2019-07-19 12:16:39

标签: ruby

如何将局部变量num_1分配为[1, 2]?那不是应该是1吗?

2.1.5 :121 > num_1 = 1, num_2 = 2
 => [1, 2] 
2.1.5 :122 > 
2.1.5 :123 >   
2.1.5 :124 >   num_1
 => [1, 2] 
2.1.5 :125 > 
2.1.5 :126 >   
2.1.5 :127 >   num_2
 => 2 
2.1.5 :128 > 

2 个答案:

答案 0 :(得分:3)

它首先将2分配给num_2,然后返回一个值并将其放入分配给num_1的数组中

[11] pry(main)> num_1 = 1, num_2 = 2
=> [1, 2]
[12] pry(main)> num_1 = 1, (num_2 = 2)
=> [1, 2]
[13] pry(main)> num_1 = [1, (num_2 = 2)]
=> [1, 2]

如果要在一行中分配两个变量,请使用分号:

[14] pry(main)> num_1 = 1; num_2 = 2
=> 2
[15] pry(main)> num_1
=> 1
[16] pry(main)> num_2
=> 2

答案 1 :(得分:3)

虽然做这样的单行并行分配是有效的Ruby代码:

a, b, c, d = 'foo', 'bar', 'baz', 'foobar'

它被认为是“不良风格”。请参见《 Ruby样式指南》中的Parallel Assignment