update(other_hash)和merge(other_hash)之间的区别

Aru*_*hit 12 ruby

更新代码:

irb(main):001:0> h1 = { "a" => 100, "b" => 200 }
=> {"a"=>100, "b"=>200}
irb(main):002:0> h2 = { "b" => 254, "c" => 300 }
=> {"b"=>254, "c"=>300}
irb(main):003:0> h1.update(h2)
=> {"a"=>100, "b"=>254, "c"=>300}
Run Code Online (Sandbox Code Playgroud)

合并代码:

irb(main):001:0> h1 = { "a" => 100, "b" => 200 }
=> {"a"=>100, "b"=>200}
irb(main):002:0> h2 = { "b" => 254, "c" => 300 }
=> {"b"=>254, "c"=>300}
irb(main):003:0> h1.merge(h2)
=> {"a"=>100, "b"=>254, "c"=>300}
irb(main):004:0>
Run Code Online (Sandbox Code Playgroud)

我运行上面mergeupdate方法相同hash.但得到了相同的输出.所以我的问题是:是update和并merge使用相同的逻辑吗?如果不相同那么输出如何相同?

And*_*all 23

updatemerge相同的逻辑工作?

不,他们不一样.update是别名merge!,是的原位变体merge.

如果不相同那么输出如何相同?

因为在这两种情况下,您都使用了调用的返回值,但h1在每种情况下,值都是不同的:

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 }
Run Code Online (Sandbox Code Playgroud)