Рассчитайте сумму объектов для каждого уникального объекта свойства в Ruby

StackOverflow https://stackoverflow.com/questions/2625749

  •  26-09-2019
  •  | 
  •  

Вопрос

Я помогал с ответом в этот вопрос И это вызвало вопрос самостоятельно.

  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

Любые идеи?

Это было полезно?

Решение

def inventory
  Hash[pieces.group_by(&:flavor).map{|f,p| [f, p.size]}]
end
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top