最近正在看《Ruby 编程语言》,里面一个对象引用的例子让我糊涂了,代码如下
s = "Ruby"
t = s
t[-1] = ""
print s #这里是"Rub"
t = "Java"
print s,t #这里是“RubJava“
为什么上面改变 t 的时候 s 也发生了变化,而下面改变 t 时 s 没有发生变化?
书上还有一段极绕口的解释: 在 Ruby 中,当把一个对象传递给一个方法时,其实传递的是对该对象的引用,被传递的既不是对象本身,也不是一个指向该对象的引用的引用。换言之,方法实参是通过值而不是引用来传递的,只不过被传递的值正好是对象的引用。