Рассчитайте сумму объектов для каждого уникального объекта свойства в Ruby
-
26-09-2019 - |
Вопрос
Я помогал с ответом в этот вопрос И это вызвало вопрос самостоятельно.
Pie
это объект, который имеетpieces
массив изPiePiece
объекты.- Каждый
PiePiece
имеетflavor
атрибут
Как мне создать хеш, который выглядит так:
# flavor => number of pieces
{
:cherry => 3
:apple => 1
:strawberry => 2
}
Это работает, но я думаю, что это может быть улучшено
def inventory
hash = {}
pieces.each do |p|
hash[p.flavor] ||= 0
hash[p.flavor] += 1
end
hash
end
Любые идеи?
Решение
def inventory
Hash[pieces.group_by(&:flavor).map{|f,p| [f, p.size]}]
end
Не связан с StackOverflow