我有一个数组
[1,2,4,5,4,7]
,我想找到每个数字的频率并将其存储在哈希中。我有这段代码,但它会返回 NoMethodError: undefined method '+' for nil:NilClass
。def score( array )
hash = {}
array.each{|key| hash[key] += 1}
end
期望的输出是
{1 => 1, 2 => 1, 4 => 2, 5 => 1, 7 => 1 }
hash = {}
改成hash = Hash.new(0)
。这会告诉Ruby,在遇到需要值的上下文中(例如hash[key] += 1
或v = hash[key]
),如果哈希表不包含键key
,就要在采取进一步动作之前向哈希表中添加key=>0
(例如hash[key] += 1
)。但是,如果哈希表中没有该键,则if hash[key] == 7
将求值为if nil == 7
;哈希表不会添加key=>0
。 - Cary Swoveland