mergeとmerge!

Hash#mergeは非破壊的ですが、Hash#merge!は破壊的です。!が付いているメソッドは使い方に注意が必要なメソッドです。

a = {
  "Alice" => 23,
  "Bobby" => 16,
  "Chris" => 21,
}
b = {
  "Alice" => 15,
  "David" => 12,
}
p a           #=> {"Alice"=>23, "Chris"=>21, "Bobby"=>16}
p b           #=> {"Alice"=>15, "David"=>12}
p a.merge(b)  #=> {"Alice"=>15, "David"=>12, "Bobby"=>16, "Chris"=>21}
p a           #=> {"Alice"=>23, "Chris"=>21, "Bobby"=>16}
p a.merge!(b) #=> {"Alice"=>15, "David"=>12, "Chris"=>21, "Bobby"=>16}
p a           #=> {"Alice"=>15, "David"=>12, "Chris"=>21, "Bobby"=>16}