2017-01-28 45 views
0

我想在声明散列值之后清除数组,并允许散列值保持不变。 这甚至可能吗?清除数组而不破坏引用

hash = {} 
number= "number" 
array = [1,2,3,4,5,6] 
hash[number]=array 

这是清除数组后的预期结果。

{"number"=>[1, 2, 3, 4, 5,6]} 
+0

我想清除数组,这样我就可以在分配给散列后添加新元素。 – olafsadventures

回答

5
hash[number] = array.dup 
array.clear 
hash 
=> {"number"=>[1, 2, 3, 4, 5, 6]} 

如果您array只包含简单对象(如整数是),你可以使用dup方法。否则,你需要一个深层复制。

+0

Yippee!这工作。 – olafsadventures

+0

即使有其他对象,'dup'也是最好的选择,所以人们不可能想要克隆数组中的对象。 – akuhn