我有两个变量,一个 (b
) 引用另一个 (a
)。当我用方法修改a
时,b
也被修改了:
a = "TEXT"
b = a
print b
#=> TEXT
a.downcase!
print b
#=> text
但是,当我直接修改a
时,b
保留了它的值:
a = "TEXT"
b = a
print b
#=> TEXT
a = "Something Else"
print b
#=> TEXT
当 b
最初引用的变量被直接修改而不是通过方法修改时,为什么它的行为不同?
这在 Ruby 中是不是一件不合适的事情,如果是这样,用一个变量引用另一个变量的更好做法是什么?
最佳答案
Ruby 使用引用,你在其中犯了一个小错误。
这个:
a.downcase!
正如 'bang' 方法所暗示的那样,正在更改 a
引用的值。
所以 a
仍然引用同一个对象,只是被小写改变了!方法
但是这个:
a = "Something Else"
实际上是在告诉 a
引用一个恰好也是字符串的新对象。
由于 b
正在引用另一个对象并且该对象没有更改,它仍然打印 TEXT。
关于Ruby 变量引用其他变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24481885/