为什么`<<`附加到Ruby字符串而`+ =`不附加?

Cpt*_*rkt 6 ruby string reference

我现在正在编写一个教程,我想了解为什么会发生以下情况:

original_string = "Hello, "
hi = original_string
there = "World"
hi += there
assert_equal "Hello, ", original_string

original_string = "Hello, "
hi = original_string
there = "World"
hi << there
assert_equal "Hello, World", original_string
Run Code Online (Sandbox Code Playgroud)

为什么+=没有效果original_string,<<是吗?我绝对肯定第二种情况也会相同"Hello, ",但事实并非如此.

hi = original string在第一个例子中似乎复制了original_stringinto 的值hi,但hi = original string在第二个例子中似乎设置hi为指向相同的字符串original string.我猜在幕后有关于是复制值还是复制引用的某种隐含决定......或者其他什么.

Gre*_*rdt 1

您应该查看 String 类的 Ruby 文档:

字符串#+方法

字符串#<< 方法