Ruby Hash初始化(默认值为nil)

oco*_*onn 12 ruby hash

我一直在阅读Ruby文档,并查看有关该问题的其他帖子,但我仍然对此感到疑惑:

#counts each number in an array once
array = [1,1,2,5,3,2,5,3,3,3]
numbers = {}
array.each { |num| numbers[num] += 1 }

=> in `block in mode': undefined method `+' for nil:NilClass (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

Hash文档中,a的默认值Hashnil,这就是我假设我得到此错误的原因.有没有更好的方法将每个键/(值+ = 1)插入数字数组?

squ*_*guy 24

尝试将默认值传递给新哈希

numbers = Hash.new(0)
Run Code Online (Sandbox Code Playgroud)


Yu *_*Hao 7

您可以创建一个0用作默认值的哈希,如下所示:

numbers = Hash.new(0)
Run Code Online (Sandbox Code Playgroud)