我有当我打印出的散列值,我作为顺序使用参考值的数组。 我想修改数组,使得数组的值是“漂亮”。 我想我只是DUP或克隆的阵列,更改值和原来的对象将保持unchanaged。 但是(在IRB)...
@arr = ['stuff', 'things']
a = @arr.clone
b = @arr.dup
所以,在最起码,和@arr是不同的对象:
a.object_id == @arr.object_id
=> false
但现在它变得奇怪
a[0].capitalize!
a
=> ['Stuff', 'things']
@arr
=> ['Stuff', 'things'] ##<-what?
b
=> ['Stuff', 'things']## <-what???
好...修改一个改变别人,让改回来?
a[0] = 'stuff'
a
=> ['stuff', 'things']
@arr
=> ['Stuff', 'things'] ## <- WHAT?????
为了完整B [1] .capitalize! 具有相同的效果,大写所有三个阵列的第二位置
所以......就在利用年底的爆炸使它非常有力? 足以跨越到其它的目的?? 我知道这样做的其他方式,但这只是似乎非常奇怪了吧。 我认为这事做用是一个“浅拷贝”。 在最好的办法建议这样做吗?