请帮我找下一篇文章。
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
使variable
a
保持对与variableb
相同对象的引用所以当你输入:b << 'ty'
变量
a
中包含的字符串也将更改-这与String
实例相同。另一方面,假设变量
b
包含对字符串'qwer'
的引用。如果你有:
a = b
b = 'ty'
在第一行中,将变量
a
分配给与b
相同的对象。在第二行中,将新的String
对象赋给变量b
最后,两个变量都引用了不同的对象。关于ruby - Ruby分配行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17852356/