我在Ruby中遇到了以下问题
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
本质上是一样的吗?