У меня есть массив, как такИспользование Hash.new в качестве начального значения при уменьшении массива
[1,1,2,3,3,3,4,5,5]
и я хочу, чтобы подсчитать количество вхождений каждого числа, которые я пытаюсь сделать так, как
[1,1,2,3,3,3,4,5,5].reduce(Hash.new(0)) { |hash,number| hash[number] += 1 }
проблема в том, я получаю следующее сообщение об ошибке при попытке запустить его
NoMethodError: undefined method `[]=' for 1:Fixnum
from (irb):6:in `block in irb_binding'
from (irb):6:in `each'
from (irb):6:in `reduce'
from (irb):6
Могу ли я установить начальное значение, как это, или я получаю это неправильно?
Я всегда забывают, что есть 'each_with_object'. Я нахожу его более чистым, чем возвращение хэша на каждой итерации. –
уборщица было словом, которое я искал благодаря :) :) – tihom
Хорошее использование ewo! –