这是<<<<<<标志?

时间:2014-05-28 20:06:16

标签: ruby

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

1 个答案:

答案 0 :(得分:4)

ba在您的作业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

最好阅读

String#+

  

连接 - 返回包含与str

连接的other_str的新String

String#<<

  

追加 - 将给定对象连接到str