请帮我找下一篇文章。

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

但是如果
a = 'qwer'
a = b
b = 'ty'
puts b # => 'ty'
puts a # => 'qwer'

我知道为什么在这种情况下
我知道效果很好,但我找不到解释-为什么
附笔。
如果适用的话-请给出关于这个主题的文章的链接(或者类似的,我可能会错过像这样更有趣的功能)。
泰恩。

最佳答案

当你这样做的时候

a = b

使variablea保持对与variableb相同对象的引用所以当你输入:
b << 'ty'

变量a中包含的字符串也将更改-这与String实例相同。
另一方面,假设变量b包含对字符串'qwer'的引用。
如果你有:
a = b
b = 'ty'

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

关于ruby - Ruby分配行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17852356/

10-13 02:08