插入数组后,为什么值在哈希值中为空?

时间:2012-09-28 21:00:55

标签: ruby

我有一个数字数组,我希望各个数字是键,数组本身是值。这样做不会带来任何问题

keys.each do |i| 
    myHash[i] = keys
end

但是现在我希望值为数组减去每次后续迭代的第一个值,所以我这样做了

keys = Array.new

numbers.each do |i|
    keys.push(i)
end

keys.each do |i|
    # puts i
    # puts numbers.inspect
    myHash[i] = numbers
    numbers.shift
end

它为我提供了空数组作为所有键的哈希值。这是为什么?最终,我希望我的哈希在[1,2,3,4]

的数组中看起来像这样

{1 => [1,2,3,4],2 => [2,3,4],3 => [3,4],4 => [4]}

谢谢!

1 个答案:

答案 0 :(得分:2)

您没有对数组进行深层复制。

尝试:

keys.each do |i|
   # puts i
   # puts numbers.inspect
   myHash[i] = numbers.clone
   numbers.shift
end