Difference between update(other_hash) and merge(other_hash)
Are
update
andmerge
works with same logic?
No, they are not the same. update
is an alias for merge!
, which is the in-place variant of merge
.
if not same then how the output came same for those?
Because in both cases you are using the return value of the call, however, the value of h1
is different in each case:
h1 = { "a" => 100, "b" => 200 }
h2 = { "b" => 254, "c" => 300 }
h1.update(h2)
h1 #=> { "a" => 100, "b" => 254, "c" => 300 }
h1 = { "a" => 100, "b" => 200 }
h2 = { "b" => 254, "c" => 300 }
h1.merge(h2)
h1 #=> { "a" => 100, "b" => 200 }
Hash#update
is an alias for Hash#merge!
http://ruby-doc.org/core-1.9.3/Hash.html#method-i-update
Hash#update is alias to Hash#merge!
The difference between Hash#merge and Hash#update is Hash#update updates keys/values in-place, whereas Hash#merge returns updated hash without touching the calling instance.