草庐IT

ruby - dup 和 clone 都返回不同的对象,但是修改它们会改变原始对象

我有一个值数组,在打印散列值时用作顺序引用。我想修改数组,使数组值“更漂亮”。我想我只是复制或克隆数组,更改值,原始对象将保持不变。然而(在irb中)...@arr=['stuff','things']a=@arr.cloneb=@arr.dup所以,至少,a和@arr是不同的对象:a.object_id==@arr.object_id=>false但是现在变得奇怪了a[0].capitalize!a=>['Stuff','things']@arr=>['Stuff','things']##['Stuff','things']##好的...所以修改一个会改变其他的,让我们把它改回来?a

ruby - 实例变量在 'dup'之后仍然引用

我有一个类的对象,我想用dup复制它。其中一个实例变量是一个数组,它似乎在引用它。我认为dup实际上创建了一个DUPLICATE。这是我的IRBsession:irb(main):094:0>classGirb(main):095:1>attr_accessor:ivirb(main):096:1>definitializeirb(main):097:2>@iv=[1,2,3]irb(main):098:2>endirb(main):099:1>end=>nilirb(main):100:0>a=G.new=>#irb(main):101:0>b=a.dup=>#irb(main):1