web-dev-qa-db-fra.com

Créer une clé de hachage à partir d'une variable dans Ruby?

J'ai une variable id et je veux l'utiliser comme clé dans un hachage afin que la valeur affectée à la variable soit utilisée comme clé du hachage.

Par exemple, si j'ai la variable id = 1 le hachage résultant serait { 1: 'foo' }.

J'ai essayé de créer le hachage avec,

{
  id: 'foo'
}

Mais cela ne fonctionne pas, ce qui entraîne un hachage avec le symbole :id à 'foo'.

J'aurais pu jurer l'avoir déjà fait mais je dessine complètement un blanc.

51
James McMahon

Si vous souhaitez remplir un nouveau hachage avec certaines valeurs, vous pouvez les passer à Hash::[] :

Hash["a", 100, "b", 200]             #=> {"a"=>100, "b"=>200}
Hash[ [ ["a", 100], ["b", 200] ] ]   #=> {"a"=>100, "b"=>200}
Hash["a" => 100, "b" => 200]         #=> {"a"=>100, "b"=>200}

Donc dans votre cas:

Hash[id, 'foo']
Hash[[[id, 'foo']]]
Hash[id => 'foo']

La dernière syntaxe id => 'foo' peut également être utilisé avec {}:

{ id => 'foo' }

Sinon, si le hachage existe déjà, utilisez Hash#=[] :

h = {}
h[id] = 'foo'
85
Gumbo