gpt4 book ai didi

ruby - Ruby 中的变量什么时候决定是否持有一个新的引用?

转载 作者:数据小太阳 更新时间:2023-10-29 07:47:04 24 4
gpt4 key购买 nike

我了解到,在 Ruby 中,变量持有对对象的引用,而不是对象本身。例如:

a = "Tim"
b = a
a[0] = 'J'

那么 ab 都有值“Jim”。

但是,如果我将第 3 行更改为

a = "Jim"

然后 a == Jimb == Tim

我假设这意味着我更改的代码为 a 创建了一个新的引用。

那么,为什么改变一个字母或改变整个字符串会有如此大的不同呢?

后续问题:Java 的工作方式是否相同?

谢谢。

最佳答案

这里要学习的唯一一件事是赋值方法调用之间的区别。

a = 'Jim'

是一项任务。您创建一个新的字符串对象(字面量 'Jim')并将其分配给变量 a

另一边,

a[0] = 'J'

是一个method call在变量 a 已经引用的对象上。方法调用不能将变量引用的对象替换为另一个对象,它只能更改对象的内部状态,和/或返回另一个对象。

关于ruby - Ruby 中的变量什么时候决定是否持有一个新的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7095294/

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