为什么有`merge`方法有三个变量?

时间:2015-10-01 07:34:42

标签: ruby hash merge

h1 = { "a" => 100, "b" => 200 }
h2 = { "b" => 254, "c" => 300 }
h1.merge(h2) do |key, old, new|
  new - old
end

此代码如何工作?为什么有三个变量(key, old, new),它们指向哪里?如果未定义oldnew,如何从new中减去old

1 个答案:

答案 0 :(得分:3)

如果您阅读documentation,您将了解到:密钥,旧值和新值。

h1.merge(h2) { |key, old, new| new - old } 

表示最终结果的值为h2[key] - h1[key]。由于您要h2合并h1,因此h2的值将为新值,h1中的值将为旧值。