Ruby 变量赋值

Ruby variable assignment

有人可以解释这种行为吗:

a = b = c = 1, 2, 3 
a # => [1, 2, 3]
b # => 1
c # => 1

在赋值a = b = c = 1, 2, 3中,变量abc应该被赋值[1, 2, 3]。有什么想法吗?

你糊涂了

a=b=c=1,2,3

实际上是:

a = (b = c = 1), 2, 3

剩下

c = 1 # => 1 
b = c # => 1 
a = 1,2,3 # => [1, 2, 3] 

要执行您所说的操作,您应该按照以下步骤操作:

a,b,c = 1,2,3
    p a #=> 1
    p b #=> 2
    p c #=> 3

Can someone explain why is this happening

@shivam 问题,但添加一些括号可能会更清楚。

a = b = c = 1, 2, 3

解释为:

a = [(b = (c = 1)), 2, 3]

表达式按以下顺序求值:

           c = 1
      b = (     )
a = [(           ), 2, 3]

the variables a, b, and c should be assigned [1, 2, 3]

要获得预期的结果,您可以这样写:

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

解释为:

a = (b = (c = [1, 2, 3]))

并按以下顺序评估:

          c = [1, 2, 3]
     b = (             )
a = (                   )