2009-11-08 5 views
1

Je suis novice en Ruby .. à la recherche d'une aide ..problème de Hash dans Ruby

J'ai un code

DB = { 'key1' => "value1", 
     'key2' => "value2"} 

key = gets 
DB["#{key}"] 

quand je rentre key1 de la console que je reçois nil comment résoudre ce problème?

J'ai essayé quelques alternatives différentes mais je n'ai pas pu le résoudre. J'espère avoir de l'aide ici.

Merci

Répondre

6

Il y a un caractère de nouvelle ligne à la fin de votre chaîne. Utilisez gets.chomp à la place.

+1

et vous pouvez simplement utiliser DB [clé] au lieu de DB ["# {clé}"] –

+0

Merci :-) cela fonctionne – Sanju

0

Eh bien, "key1" est juste une chaîne, comme "valeur1".

Si vous voulez tirer « valeur1 » de DB en utilisant « key1 », tout ce que vous avez besoin est

DB["key1"] 

qui vous donnera votre « valeur1 » retour.

+0

Ooh, la plupart d'entre nous ont mal compris le problème. Andy a bien compris. Vous n'obtenez pas la bonne valeur car le résultat obtenu n'est pas exactement "key1". –

1

Qu'est-ce que vous essayez de faire? Ce n'est pas tout à fait clair dans votre question.

Si vous souhaitez accéder à la valeur DB en saisissant la clé que je le ferais comme ceci:

DB = { 'key1' => "value1", 'key2' => "value2"} 
key = gets.strip 
puts DB[key] 
0

gets renvoie la valeur de Ruby de la console, y compris le caractère de nouvelle ligne (\ n). En pratique, à moins que vous ayez besoin d'un retour à la ligne, entrez var=gest.chomp. chomp est une méthode de String qui supprime les caractères de fin \ n, \ r et \ r \ n. Donc, votre code serait le suivant:

key=gets.chomp 
puts DB[key] 
Questions connexes