1

请帮助找到一些关于下一个行为的文章。

a = 'qwer'
a = b
b << 'ty'
puts b # => 'qwerty'
puts a # => 'qwerty'

但如果

a = 'qwer'
a = b
b = 'ty'
puts b # => 'ty'
puts a # => 'qwer'

我知道为什么在这种情况下

我知道它运作良好,但我找不到解释 - 为什么会这样

附言

如果适用 - 请提供有关此主题的文章的链接(或类似的也许我错过了像这样更有趣的功能)。

阈值。

4

1 回答 1

5

当你这样做

a = b

你让变量a保持引用与变量相同的对象b。这就是为什么当你输入:

b << 'ty'

变量中包含的字符串a也会改变 - 这是同一个String实例。

另一方面,假设您有b包含对 string 引用的变量'qwer'。如果你有:

a = b
b = 'ty'

在第一行中,您将变量分配a给与b. 在第二行中,您将一个新String对象分配给 variable b。所以最后两个变量都引用了不同的对象。

于 2013-07-25T08:06:13.080 回答