2017-10-17 36 views
2

我有一個哈希哈希散列,我插入新哈希值或將值添加到現有哈希。 我一直感覺像Ruby有一個更好的方式來做到這一點:有沒有一種比較笨拙的方式來存儲一個Ruby哈希值?

map # => { 1 => {:type => "humbug", :name => "grinch" }, 2 => {:type => 2 } } 

    if map[key] 
    map[key].store(:name, value) 
    else 
    map[key] = { name: value } 
    end 

我希望能夠像做

map[key].store(:name, value) || map[key] = {name: value} 

當然是失敗的,如果沒有valuemap[key] ...建議?

+3

沒有 「圖」 在Ruby中,有哈希值。 – meagar

+0

@meagar破壞!我整天都在使用groovy ......其中有各地的地圖:D – GLaDOS

回答

5

有沒有一種不太尷尬的方法?

是的。

map[key] ||= {} 
map[key].store(:name, value) # or map[key][:name] = value 

或者使用哈希缺失值處理程序之一。

map = Hash.new { |hash, key| hash[key] = {} } 
# then set fearlessly, missing hashes will be auto-created. 
map[key][:name] = value 
+0

'(map [key] || = {})。store(:name,value)'。 – mudasobwa

+0

@mudasobwa我,我不會走這麼遠。但對他自己的:) –

+1

@SergioTulentsev我會走那麼遠。我愛Ruby的優雅。 – GLaDOS

相關問題