0

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

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

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

puts creatures["tigers"] 

但是当我创建一个具有默认值的哈希时:

my_hash = Hash.new("hello")

并访问哈希中不存在的密钥,我得到hello结果:

puts my_hash["hey"] 

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

4

1 回答 1

4

这是预期的行为。根据文档

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

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

于 2013-05-20T13:56:14.327 回答