2012-05-13 6 views
3

Lorsque vous essayez de traiter avec un hachage emboîtée en rubis, je reçois cette erreur:méthode non définie `has_key '?

undefined method `has_key' for {"_l"=>{"or"=>"@`"}, "a"=>{}}:Hash (NoMethodError) 

n'est pas la chose référencée par « pour » ci-dessus ... un hachage? les hachages n'ont-ils pas la méthode has_key? que se passe t-il ici?

est ici le code ... merci:

$conditioning_environments = { 
    "_l" => 
    { 
    "or" => "@`" 
    }, 
    "a" => { 

    } 
} 
.... 
if $conditioning_environments["_"+graphemes[index+1]].has_key(g) 
    .... 

Répondre

12

La méthode que vous voulez est has_key? avec un point d'interrogation.

L'extrait que vous avez collé comporte le point d'interrogation, mais une erreur indique qu'il manque dans le code problématique.

EDIT: vous avez supprimé le point d'interrogation à partir de l'extrait collé: p

+0

merci, je suppose que je suppose que la marque question était facultative –

+0

et, vous avez raison, la pâte est en quelque sorte incorrect et je (?) l'a édité pour refléter ce que j'ai vu dans mon code. –