我如何合并两个哈希值而不产生新的键,这意味着合并将合并两个哈希值中存在的键?
例如,我需要以下内容:

h = {:foo => "bar"}
j = {:foo => "baz", :extra => "value"}

puts h.merge(j)    # {:foo => "baz"}

我正在寻找一个真正干净的方法来做这件事,因为我目前的实现相当混乱。

最佳答案

您可以从第二个哈希中删除不在第一个哈希中的键,然后合并:

h.merge j.select { |k| h.keys.include? k }

与我编辑的替代方案不同,如果您决定将其更改为merge!update,则这是安全的。

10-08 19:06