2013-05-20 2 views
0

Lorsque je crée un hachage comme suit:différentes valeurs de hachage par défaut

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

et accéder à une clé qui ne figure pas dans le hachage, je reçois nil comme la sortie:

puts creatures["tigers"] 

Mais quand Je crée un hachage avec une valeur par défaut:

my_hash = Hash.new("hello") 

et accéder à une clé qui ne figure pas dans le hachage, je reçois hello comme résultat:

puts my_hash["hey"] 

Pourquoi ai-je des résultats différents dans les deux cas, lorsque je définis hash différemment?

+3

"en lui donnant une valeur par défaut" - c'est pourquoi. Quel résultat vous attendiez-vous? –

+1

"Que dois-je obtenir de résultats différents lorsque je définis un hash différemment?" ... C'est pourquoi! –

Répondre

3

C'est un comportement attendu. Selon les doc

Hashes ont une valeur par défaut qui est renvoyée lors de l'accès des clés qui n'existent pas dans le hachage. Si aucune valeur par défaut n'est définie, aucune valeur n'est utilisée. Vous pouvez définir la valeur par défaut en l'envoyant comme argument à :: nouveau:

Si vous voulez que le retour de hachage nil si la clé est pas présent, ne passent pas « bonjour » à #new.