mač*_*ček 2 ruby arrays hash enumerable
Pie
是一个具有pieces
由PiePiece
对象组成的数组的对象.PiePiece
都有一个flavor
属性如何创建如下所示的哈希:
# flavor => number of pieces
{
:cherry => 3
:apple => 1
:strawberry => 2
}
Run Code Online (Sandbox Code Playgroud)
这有效,但我认为可以改进
def inventory
hash = {}
pieces.each do |p|
hash[p.flavor] ||= 0
hash[p.flavor] += 1
end
hash
end
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
def inventory
Hash[pieces.group_by(&:flavor).map{|f,p| [f, p.size]}]
end
Run Code Online (Sandbox Code Playgroud)