不同的默认哈希值

时间:2013-05-20 13:50:22

标签: ruby

当我按如下方式创建哈希时:

creatures = { "weasels" => 0,
  "puppies" => 6
}

并访问哈希中不存在的密钥,我得到nil作为输出:

puts creatures["tigers"] 

但是当我使用默认值创建哈希时:

my_hash = Hash.new("hello")

并访问哈希中不存在的密钥,结果为hello

puts my_hash["hey"] 

为什么在我以不同方式定义哈希值的两种情况下会得到不同的结果?

1 个答案:

答案 0 :(得分:3)

这是预期的行为。根据{{​​3}}

  

哈希具有访问密钥时返回的默认值   哈希中不存在。如果未设置默认值,则使用nil。您可以   通过将其作为参数发送到:: new:

来设置默认值

如果您希望哈希返回nil,如果密钥不存在,则不要将“hello”传递给#new