Pergunta

Eu estava ajudando com uma resposta em essa questão E isso provocou uma questão própria.

  1. Pie é um objeto que tem um pieces matriz feita de PiePiece objetos.
  2. Cada PiePiece tem um flavor 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?

Foi útil?

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
scroll top