TEXT a.downcase! print b #=-6ren">
gpt4 book ai didi

Ruby 变量引用其他变量

转载 作者:太空宇宙 更新时间:2023-11-03 17:15:45 24 4
gpt4 key购买 nike

我有两个变量,一个 (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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com