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 に答える