开发者

Calculate sum of objects for each unique object property in Ruby

开发者 https://www.devze.com 2022-12-26 08:28 出处:网络
I was helping with an answer in this question and it sparked a question of my own. Pie is an object that has a pieces array made of of PiePiece objects.

I was helping with an answer in this question and it sparked a question of my own.

  1. Pie is an object that has a pieces array made of of PiePiece objects.
  2. Each PiePiece has a flavor attribute

How do I create a hash that looks like this:

# flavor => number of pieces
{
  :cherry => 3
  :apple => 1
  :strawberry => 2
}

This works,开发者_StackOverflow中文版 but I think it could be improved

def inventory
  hash = {}
  pieces.each do |p|
    hash[p.flavor] ||= 0
    hash[p.flavor] += 1
  end
  hash
end

Any ideas?


def inventory
  Hash[pieces.group_by(&:flavor).map{|f,p| [f, p.size]}]
end
0

精彩评论

暂无评论...
验证码 换一张
取 消