Ruby 变量赋值
Ruby variable assignment
有人可以解释这种行为吗:
a = b = c = 1, 2, 3
a # => [1, 2, 3]
b # => 1
c # => 1
在赋值a = b = c = 1, 2, 3
中,变量a
、b
和c
应该被赋值[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 = ( )
有人可以解释这种行为吗:
a = b = c = 1, 2, 3
a # => [1, 2, 3]
b # => 1
c # => 1
在赋值a = b = c = 1, 2, 3
中,变量a
、b
和c
应该被赋值[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
, andc
should be assigned[1, 2, 3]
要获得预期的结果,您可以这样写:
a = b = c = [1, 2, 3]
解释为:
a = (b = (c = [1, 2, 3]))
并按以下顺序评估:
c = [1, 2, 3]
b = ( )
a = ( )