Ruby 变量引用其他变量

标签 ruby variables object reference

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

相关文章:

ruby - 从对象数组中获取包含特定值的数组的最 Rubyish 方式?

javascript - 表单关闭而不更新数据库表 - ruby​​ on Rails

swift - 如何使用随机变量快速选择正确的按钮

R:如何使用函数参数作为变量名的一部分

c# - 如何通过子属性选择对象

java - 从其他方法访问对象

jquery - Facebook 社交按钮在 jquery/rails 中不起作用

ruby - 使用 Ruby 记录器根据日志记录级别记录到不同的文件

python - 创建单独变量字典的更简单方法?

javascript - 生成 24 个条目的列表并检查对象中是否存在内容