Ruby 奇怪的赋值问题
结论: 赋值 非 拷贝
?
Ruby1.9.3
?
例1
?
?
a = [1,2,3]
b = a ? ? ? ? ? ? #只是引用,不是拷贝
a << 4
puts a #=> [1,2,3,4]
puts b #=> [1,2,3,4]
?
?
例2
?
?
a = [1,2,3]
b = a ? ? ? ? ? ??
b << 4
puts a #=> [1,2,3,4]
puts b #=> [1,2,3,4]
?
例3
?
a = [1,2,3]
b = a
b = [] ?#=> []
a ?#=> [1,2,3] ? ? ?#赋空值的时候,两者是不同步的
?
原因: b = [] 操作是新建一个变量b,这个b已经不是刚才的b,可通过b.object_id分别这两个变量
?
?
?
?