Перебирать массив хешей и обновлять каждый хеш - PullRequest
0 голосов
/ 10 октября 2018

У меня есть массив хэшей, как показано ниже:

data[:array] = [{:a=>"a", :b=>"b"}, {:a=>"a", :b=>"b"}]

Мне нужно обновить каждый хэш новыми парами ключ-значение, как показано ниже.

data[:array] = [{:a=>"a", :b=>"b", :c=>"c", :d=>"d"},
                {:a=>"a", :b=>"b", :c=>"c", :d=>"d"}]

Я пытаюсь выполнитьэто выглядит следующим образом:

data[:array].each do |array|
  c_info = fetch_c(args: args) # Say fetch_c gives out c as output 
  d_info = fetch_d(args: args) # Say fetch_d gives out d as output 
  array.merge!(c: c_info, d: d_info)
end

Я получаю вывод:

data[:array] = [{:a=>"a", :b=>"b", :c=>"c", :d=>"d"},
                {:a=>"a", :b=>"b"}]

Хэш не обновляется во второй итерации.Пожалуйста, предложите.

1 Ответ

0 голосов
/ 10 октября 2018

Единственный способ воспроизвести проблему - это если fetch_c или fetch_d выдает ошибку между ними.

Шаги для воспроизведения:

def fetch_c(i)
  10/i
end

data[:array] = [{:a=>"a", :b=>"b"},{:a=>"a", :b=>"b"}]

data[:array].each_with_index do |array, index|
    c_info = fetch_c(index-1)
    d_info = fetch_c(index-1)
    array.merge!(c: c_info, d: d_info)
end
# ZeroDivisionError: divided by 0

data
# => {:array=>[{:a=>"a", :b=>"b", :c=>-10, :d=>-10}, {:a=>"a", :b=>"b"}]}

Пожалуйста, убедитесь, что ваши методыне выкидывает ошибку.

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