a = "test"
b = a
b << "test1"
puts a
puts b
b += "test2"
puts a
puts b
Output
------
$ruby main.rb
testtest1
testtest1
testtest1
testtest1test2
我期待以下输出。
test
testtest1
test
testtest1test2
答案 0 :(得分:4)
b
和a
在您的作业b = a
中持有相同的对象。因此,当您使用b
修改b << "test1"
时,它实际上是同一个对象它由a
指向。
a = "test"
b = a
a.object_id # => 71753220
b.object_id # => 71753220
因此,我可以告诉你你看到的行为是正确的。
现在b += "test2"
,您在这里为b
分配一个新对象。
b += "test2"
a.object_id # => 71753220
b.object_id # => 72602390
最好阅读
连接 - 返回包含与str
连接的other_str的新String
追加 - 将给定对象连接到
str
。