2

我正在帮助回答这个问题,这引发了我自己的一个问题。

  1. Pie是具有由对象pieces组成的数组的PiePiece对象。
  2. 每个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

有任何想法吗?

4

1 回答 1

5
def inventory
  Hash[pieces.group_by(&:flavor).map{|f,p| [f, p.size]}]
end
于 2010-04-12T22:14:45.930 回答