0
我遇到以下問題表示關注在Ruby中Ruby對象ID,DUP和易變性
a = [1, 2, 3]
b = a
b.delete_at(1)
b => [1,3]
a => [1,3]
b.object_id => 70178446287080
a.object_id => 70178446287080
讓我有種有這樣的一個理解。 a
持有對object_id
的數組的引用。
b
也有一個引用該同一位置爲b
指向a
,這是指它的object_id
。基本上他們指的是同樣的事情。所以如果我爲b
進行變異,a
也會發生變異。
此行爲屬於什麼類別?是否有任何我可以記住的閱讀/一般做法,這樣我在將來就不會有任何錯誤?我知道a.dup
會在不同位置提供新對象,因此a.dup == b
應該是true
。也用於a.dup.object_id == b.object_id
。
另外,是dup
和clone
在這種情況下基本上是一樣的東西,無論淺淺還是深?