Если вы используете merge!
вместо merge
, разницы нет.
Единственное отличие состоит в том, что вы можете использовать несколько полей (что означает: еще один хэш) в параметрах слияния.
Пример:
h1 = { "a" => 100, "b" => 200 }
h2 = { "b" => 254, "c" => 300 }
h3 = h1.merge(h2)
puts h1 # => {"a" => 100, "b" => 200}
puts h3 # => {"a"=>100, "b"=>254, "c"=>300}
h1.merge!(h2)
puts h1 # => {"a"=>100, "b"=>254, "c"=>300}
При назначении отдельных значений я бы предпочел h[:field] = new_val
вместо merge
для удобства чтения, а я думаю, это быстрее, чем слияние.
Вы также можете взглянуть на Hash-rdoc: http://ruby -doc.org / core / classes / Hash.html # M000759