我迭代地将元素分配给一个散列,其值是一个由整数和数组组成的数组。我当前策略的一个玩具示例是这样的(递增数组的第一个元素,并将一个数字推送到数组的第二个元素):
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]]}
但是我得到了同样的错误结果。
话虽如此,我的问题是:
- 假设这是我的问题,或者,如果不是这样,我该如何正确初始化这个哈希......
- 正确增加哈希值的第一个元素,并附加哈希值的第二个元素?