0

次のようにハッシュを作成すると:

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

ハッシュに存在しないキーにアクセスすると、次nilの出力が得られます。

puts creatures["tigers"] 

しかし、デフォルト値でハッシュを作成すると:

my_hash = Hash.new("hello")

ハッシュに存在しないキーにアクセスするとhello、結果として次のようになります。

puts my_hash["hey"] 

ハッシュを異なる方法で定義すると、2 つのケースで異なる結果が得られるのはなぜですか?

4

1 に答える 1

4

これは予期される動作です。ドキュメントによると

ハッシュには、ハッシュに存在しないキーにアクセスするときに返されるデフォルト値があります。デフォルトが設定されていない場合は、nil が使用されます。::new: に引数として送信することで、デフォルト値を設定できます。

nilキーが存在しない場合 にハッシュを返したい場合は、「hello」を に渡さないでください#new

于 2013-05-20T13:56:14.327 に答える