当我按如下方式创建哈希时:
creatures = { "weasels" => 0,
"puppies" => 6
}
并访问哈希中不存在的密钥,我得到nil
作为输出:
puts creatures["tigers"]
但是当我使用默认值创建哈希时:
my_hash = Hash.new("hello")
并访问哈希中不存在的密钥,结果为hello
:
puts my_hash["hey"]
为什么在我以不同方式定义哈希值的两种情况下会得到不同的结果?
答案 0 :(得分:3)
这是预期的行为。根据{{3}}
哈希具有访问密钥时返回的默认值 哈希中不存在。如果未设置默认值,则使用nil。您可以 通过将其作为参数发送到:: new:
来设置默认值
如果您希望哈希返回nil
,如果密钥不存在,则不要将“hello”传递给#new
。