reduziert habe ich ein Array wie soHash.new als Anfangswert verwenden, wenn ein Array
[1,1,2,3,3,3,4,5,5]
und ich möchte die Anzahl der Vorkommen von jeder Zahl zählen, die ich wie so zu tun, ich versucht,
[1,1,2,3,3,3,4,5,5].reduce(Hash.new(0)) { |hash,number| hash[number] += 1 }
Das Problem ist, ich die folgende Fehlermeldung erhalten, wenn ich versuche, es zu laufen
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
kann mich den Anfangswert setzen wie das, oder bekomme ich das falsch?
ich immer vergessen, dass es 'each_with_object'. Ich finde es sauberer als den Hash in jeder Iteration zurückgeben. –
Reiniger war das Wort, das ich suchte danke :) – tihom
Nice Verwendung von ewo! –