значения ruby ​​/ merge-sum из двух разных объектов, имеющих одинаковые ключи - PullRequest
0 голосов
/ 17 мая 2019

Имея следующее:

a = { k1: 10, k2: 20 }
b = { k1: 14, k2: 10 }

Мне нужно получить:

# Not sure if that's the right approach, but broken down in steps :

# c = { k1: a[k1] + b[k1], k2: a[k2] + b[k2] }
# c = { k1: 10 + 14, k2: 20 + 10 }
c = { k1: 24, k2: 30 }

Каков наиболее подходящий способ получить этот результат?

Ответы [ 2 ]

6 голосов
/ 17 мая 2019
a.merge(b) { |_,o,n| o+n }
  #=> {:k1=>24, :k2=>30}

Используется форма Hash # merge , в которой используется блок { |_,o,n| o+n } определить значения ключей (переменная блока _), которые присутствуют в обоих объединяемых хешах. См. Документ для объяснения переменных блока o и n.

0 голосов
/ 17 мая 2019

Первый ответ лучше, но это тоже работает.

a = { k1: 10, k2: 20 }
b = { k1: 14, k2: 10 }
c = {}
keys = (a.keys + b.keys).uniq
keys.each {|k| c[k] = a[k] + b[k]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...