簡體   English   中英

如果嵌套哈希中不存在密鑰,則創建密鑰

[英]Create key if it doesn't exist in nested hashes

我一直在嘗試找出如何更雄辯地編寫此ruby代碼。 有人有更好的解決方案嗎?

a[:new] = {} if a[:new].nil?
a[:new].merge!( { new_key => new_value } )

有沒有一種更優雅的方式來寫這個? 在處理需要檢查密鑰是否存在以及是否創建密鑰的嵌套哈希時,我遇到了很多問題。

Hash#to_hNilClass#to_h的幫助下,將其編寫如下

a[:new] = a[:new].to_h.merge( { new_key => new_value } )

范例:

hsh1[:a] # => nil
hsh1[:a] = hsh1[:a].to_h.merge({1=>2})
hsh1[:a] # => {1=>2}

hsh2 = {:a => {'k' => 2}}
hsh2[:a] # => {"k"=>2}
hsh2[:a] = hsh2[:a].to_h.merge({1=>2})
hsh2 # => {:a=>{"k"=>2, 1=>2}}

在開始時執行此操作:

a = Hash.new{|h, k| h[k] = {}}

然后,不關心a是否具有密鑰:new與否,執行

a[:new].merge!(new_key => new_value)

要么

a[:new][new_key] = new_value

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM