0

我有一个数字数组,我希望各个数字成为键,而数组本身就是值。这样做没有问题

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]}

谢谢!

4

1 回答 1

2

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

尝试 :

keys.each do |i|
   # puts i
   # puts numbers.inspect
   myHash[i] = numbers.clone
   numbers.shift
end
于 2012-09-28T21:02:45.357 回答