Как мне перебрать хеш, где я также могу просмотреть следующий ключ? - PullRequest
2 голосов
/ 25 августа 2010

У меня есть хэш дат к деньгам, и мне нужно поместить новые денежные вклады между датами.

Итак, допустим, мой хэш

{"000000001" => "0.00", "000000002" ="12.34", "000000010" => "5.95"}

и я хочу вставить 000000008, 54.34, тогда мой результирующий хэш должен быть

{"000000001" => "0.00", "000000002" ="66.68", "000000010" => "5.95"}

* (Это примерные метки времени)

так ... я думал что-то вроде ...

my_hash.each_with_index do |key_value, index|
  if index == my_hash.length then return my_hash end
    if time >= my_hash[dat[0]][0].to_i and time <= my_hash[dat[0]].next[0].to_i
      my_hash[index][1] += value
    end
  end
end

который, как я знаю, недействителен, но мне нужна помощь. Спасибо!

Ответы [ 2 ]

5 голосов
/ 25 августа 2010

Использование each_cons:

{
  "000000001" => "0.00", "000000002" => "66.68", "000000010" => "5.95"
}.each_cons(2) do |(prev_key, prev_value), (next_key, next_value)|
  p "#{prev_key} preceedes #{next_key}"
end
0 голосов
/ 25 августа 2010

граней, вероятно, имеет что-то вроде того, что вы предложили. Вы можете получить предыдущий ключ как

предыдущий = ноль; a.each_key {| к | p 'ключ есть', k, 'предыдущий есть', предыдущий; предыдущая = k}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...