请帮忙找一些下一个行为的文章.
a = 'qwer'
a = b
b << 'ty'
puts b # => 'qwerty'
puts a # => 'qwerty'
Run Code Online (Sandbox Code Playgroud)
但如果
a = 'qwer'
a = b
b = 'ty'
puts b # => 'ty'
puts a # => 'qwer'
Run Code Online (Sandbox Code Playgroud)
我知道为什么在这种情况下
我知道它运作良好,但我找不到解释 - 为什么如此
PS
如果适用 - 请提供有关此主题的文章的链接(或类似的可能我想念这样的更有趣的功能).
THN.
当你这样做
a = b
Run Code Online (Sandbox Code Playgroud)
你使变量a保持引用与变量相同的对象b.这就是你键入的原因:
b << 'ty'
Run Code Online (Sandbox Code Playgroud)
变量中包含的字符串a也将更改 - 这是相同的String实例.
另一方面,假设您有b包含对string的引用的变量'qwer'.如果你有:
a = b
b = 'ty'
Run Code Online (Sandbox Code Playgroud)
在第一行中,您将变量赋值a给同一个对象b.在第二行中,将新String对象分配给变量b.所以最后两个变量都引用了不同的对象.