我將元素迭代地分配給一個散列,其值是一個由整數和數組組成的數組。我的當前策略的一個玩具的例子是本(增加數組的第一元素,和推號碼到所述陣列的所述第二元素):然而如何迭代添加鍵/值對,其中每個值是一個數組?
aHash = Hash.new([0, []])
[1,3,5,1,1].each do |x|
aHash[x] = [aHash[x][0] + 1, aHash[x][1] << x]
end
aHash # => {1=>[3, [1, 3, 5, 1, 1]], 3=>[1, [1, 3, 5, 1, 1]], 5=>[1, [1, 3, 5, 1, 1]]}
環路的遞增部分似乎是工作,追加每個數組不是。所需的哈希應該是這樣的:
aHash # => {1=>[3, [1, 1, 1]], 3=>[1, [3]], 5=>[1, [5]]}
我也曾嘗試:
[1,3,5,1,1].each do |x|
aHash[x] = [aHash.values_at(x)[0][0] + 1, aHash.values_at(x)[0][1] << x]
end
aHash # => {1=>[3, [1, 3, 5, 1, 1]], 3=>[1, [1, 3, 5, 1, 1]], 5=>[1, [1, 3, 5, 1, 1]]}
,但我得到這個相同的不正確的結果。
話雖這麼說,我的問題是:
- 我怎樣才能正確,如果不是初始化這個散列,假設是我的問題,或者...
- 正確遞增的第一要素散列值,並附加散列值的第二個元素?