Calcule a soma dos objetos para cada propriedade de objeto exclusivo em rubi
-
26-09-2019 - |
Pergunta
Eu estava ajudando com uma resposta em essa questão E isso provocou uma questão própria.
Pie
é um objeto que tem umpieces
matriz feita dePiePiece
objetos.- Cada
PiePiece
tem umflavor
atributo
Como faço para criar um hash que se parece com isto:
# flavor => number of pieces
{
:cherry => 3
:apple => 1
:strawberry => 2
}
Isso funciona, mas acho que poderia ser melhorado
def inventory
hash = {}
pieces.each do |p|
hash[p.flavor] ||= 0
hash[p.flavor] += 1
end
hash
end
Alguma ideia?
Solução
def inventory
Hash[pieces.group_by(&:flavor).map{|f,p| [f, p.size]}]
end
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow