1- J'ai peu d'expérience dans Ruby et je viens de C / Python.
2- dans l'extrait suivant: p> table d'impression.Keys ( ligne 8), je peux voir les clés. Toutefois, si table.key (k) == true code> ne devient jamais réalité. P>
3 Réponses :
Il devrait être table.key? (k) code> au lieu de table.key (k) code> p> p> p>
Est-ce ce que vous recherchez, désolé je ne sais pas ce que La méthode de la clé étant appelée sur un hachage cherche la valeur, plutôt que la clé: p> de chaque sens, la méthode ne reviendra jamais vraie car ce n'est pas un booléen, il suffit de faire: P > k code> est et suppose est constitué de clé. Considérant ce hachage: hash.has_key?(:a)
=> true
Oui, has_key code> aurait résolu le problème. J'ai découvert que clé? Code> aussi. C'est un peu dérangeant que la même méthode clé code> est une méthode différente de conditionnelle. hash.key ("B") code> donne : a code> et hash.key (: a) code> donne vrai code>.
en supposant que Si vous souhaitez simplement tester, si la clé existe, utilisez la méthode (comparaison explicite avec Si votre hachage a été construit pour utiliser la valeur standard pour sa valeur par défaut (c.-à-d. la principale différence entre voir ici pour plus de détails. p> p> table code> est un hachage (que nous ne connaissons pas à coup sûr de votre code), table.key (k) code> renvoie la valeur / em> pour la clé k code>, si la clé existe dans votre hachage ou nil code> si cela ne le fait pas. Étant donné que les valeurs de votre hachage ne sont apparemment pas des valeurs booléennes, la comparaison avec true code> sera toujours false. ? code> au lieu de clé code>: p> vrai code> pourrait être effectué dans ce cas, mais est redondant, donc je l'ai laissé dehors). p> nil code>), vous pouvez raccourcir cela pour p> table.Key (k) code> et table [k] code> est que si k code> est manquant dans le hachage, le premier retourne toujours nul, tandis que cette dernière retourne la valeur par défaut de ce hachage particulier que vous avez fourni dans le constructeur. p>