Ce type d'opérations est très courant dans notre projet, nous avons donc ajouté to_group_h
à Enumerable
. Nous pouvons l'utiliser comme :
[[:x, 1], [:x, 2], [:y, 3]].to_h
# => { x: 2, y: 3 }
[[:x, 1], [:x, 2], [:y, 3]].to_group_h
# => { x: [1, 2], y: [3] }
Voici l'implémentation de Enumerable#to_group_h
:
module Enumerable
if method_defined?(:to_group_h)
warn 'Enumerable#to_group_h is defined'
else
def to_group_h
hash = {}
each do |key, value|
hash[key] ||= []
hash[key] << value
end
return hash
end
end
end