web-dev-qa-db-de.com

Erstellen eines Hash-Schlüssels aus einer Variablen in Ruby?

Ich habe eine Variable id und möchte sie als Schlüssel in einem Hash verwenden, damit der der Variablen zugewiesene Wert als Schlüssel des Hashs verwendet wird.

Wenn ich zum Beispiel die Variable id = 1 der gewünschte resultierende Hash wäre { 1: 'foo' }.

Ich habe versucht, den Hash mit zu erstellen,

{
  id: 'foo'
}

Aber das funktioniert nicht, stattdessen wird ein Hash mit dem Symbol :id bis 'foo'.

Ich hätte schwören können, dass ich das schon mal gemacht habe, aber ich zeichne gerade eine Lücke.

51
James McMahon

Wenn Sie einen neuen Hash mit bestimmten Werten füllen möchten, können Sie diese an Hash::[] übergeben:

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}

Also in deinem Fall:

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

Die letzte Syntax id => 'foo' Kann auch mit {} Verwendet werden:

{ id => 'foo' }

Andernfalls, wenn der Hash bereits existiert, verwenden Sie Hash#=[] :

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