2014-01-29 34 views
30

我有一個變量id,我想將它用作散列中的一個鍵,以便將分配給該變量的值用作散列的鍵。例如,如果我有變量id = 1,那麼所需的結果散列值將爲{ 1: 'foo' }從Ruby中的變量創建一個哈希鍵?

我試圖創建一個與哈希,

{ 
    id: 'foo' 
} 

但是,這並不工作,而不是導致哈希與符號:id'foo'

我可以發誓我以前做過這件事,但我完全畫空白。

+3

'H = {}; h [id] ='foo''或'Hash [id,'foo']' – Gumbo

+0

@Gumbo,你可以將你的評論轉換爲答案,這樣我可以將它標記爲正確嗎? –

+0

@ muistooshort,即訪問,而不是創建,這是一個不同的操作。 Gumbo的評論也表明語法不同。 –

回答

55

如果要填充具有一定值的新哈希值,你可以將它們傳遞到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' 
+1

我被困惑的問題本身,現在這個答案讓我感到困惑。 (你可以告訴我什麼是OP詢問? –

+0

@ArupRakshit OP希望使用'id'的值作爲key。'{id:'foo'}'不工作,因爲'id:'foo''是等價的到':id =>'foo''。 – Gumbo

+1

啊,所以舊式散列語法可以工作,但不是新式樣。謝謝。 –