[Ruby] Merge

Nathan Lee
Change or Die!
Published in
2 min readJul 23, 2018

合併兩個 hash , 我們可以透過 merge 這個 Ruby method 來實現。

定義如下:

hash.merge(other_hash)
hash.merge(other_hash) { |key, oldval, newval| block }

合併後回傳的新 hash ,包含了原 hash 和 other_hash 的內容,但是重寫了原 hash 中與 other_hash 有著相同 key 的 value新的 value 為 other_hash 對應到 key 的值

h1 = { a: 100, b: 250, c: 600 }h2 = { a: 500, b: 200, c: 300, d: 400}h3 = { a: 400, b: 400, c: 400, d: 800, z: 800 }h4 = { a: "oldval1", b: "oldval2"}h5 = { a: "newval1", b: "newval2"}h1.merge(h2)
=> {:a=>500, :b=>200, :c=>300, :d=>400}
h1.merge(h3)
=> {:a=>400, :b=>400, :c=>400, :d=>800, :z=>800}
h1.merge(h3) { |key, oldval, newval| newval - oldval }
=> {:a=>300, :b=>150, :c=>-200, :d=>800, :z=>800}
h4.merge(h5)
=> {:a=>"newval1", :b=>"newval2"}

Reference:

--

--