Чтобы ваш код работал, вам нужно исправить способ, которым вы пользуетесь each_with_object
.
array = %w(banana pear mango kiwi mango)
hash1 = array.each_with_object(Hash.new(0)) do |word, counts|
counts[word] += 1
end
puts hash1
Hash.new(0)
- это хеш, который возвращает ноль при считывании неизвестного ключа.Итак, что вы делаете здесь - это заполняете его, перебирая array
и увеличивая счетчик для каждого ключа на единицу.
Я рекомендую прочитать подробнее о Reduce и each_with_object, чтобы понять их использование.
Ответ Фабио более идиоматичен, но я просто хотел показать, как исправить ваш код, а не переписать его.