web-dev-qa-db-ja.com

Rubyの変数からハッシュキーを作成しますか?

変数idがあり、それをハッシュのキーとして使用して、変数に割り当てられた値がハッシュのキーとして使用されるようにします。

たとえば、変数id = 1がある場合、目的の結果のハッシュは{ 1: 'foo' }になります。

私はハッシュを作成しようとしましたが、

{
  id: 'foo'
}

しかし、それは機能せず、代わりにシンボル:idから'foo'を持つハッシュが生成されます。

前にこれをやったと誓ったかもしれませんが、私は完全に空白を描いています。

51
James McMahon

特定の値を新しいハッシュに追加する場合は、それらを 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}

あなたの場合:

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

最後の構文id => 'foo'は、{}でも使用できます。

{ id => 'foo' }

それ以外の場合、ハッシュが既に存在する場合は、 Hash#=[] を使用します。

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