名單在Ruby中,我們可以通過使用merge
功能合併散列:合併哈希和不覆蓋內
1.9.3-p194 :038 > h1 = { "a" => 1, "b" => [1] }
=> {"a"=>1, "b"=>[1]}
1.9.3-p194 :039 > h2 = { "a" => 2, "b" => [2] }
=> {"a"=>2, "b"=>[2]}
1.9.3-p194 :040 > h1.merge(h2)
=> {"a"=>2, "b"=>[2]}
合併將覆蓋陣列中的散列裏面,但我想它加入他們的行列。
=> {"a"=>2, "b"=>[1, 2]}
是否有一個ruby函數或單線程來實現這個功能?
你想要這樣的東西嗎? ruby-1.9.2> a = {:car => {:color =>「red」}} => {:car => {:color =>「red」}} ruby-1.9.2> b = {:car => {:speed =>「100mph」}} => {:car => {:speed =>「100mph」}} ruby-1.9.2> a.merge(b){|鍵,a_val,b_val | a_val.merge b_val} => {:car => {:color =>「red」,:speed =>「100mph」}} – 2013-03-02 10:04:02
如果您有兩個哈希值,選項和默認值,並且想要將默認值合併到選項而不覆蓋現有的密鑰,你真正想要做的是相反的:合併選項默認爲: 選項= defaults.merge(選項) 或者,如果你正在使用Rails,你可以做: options.reverse_merge(默認值) – 2013-03-02 10:06:13
@ X-Factor這個*是*關於選項哈希值,你傳遞給'as_json'的選項哈希值,包含'{except:[:this,:that]}''。我不想重寫'except',我想*添加*到'except'。您的解決方案不考慮陣列。 – alestanis 2013-03-02 10:20:31