使用+运算符合并哈希值

时间:2013-02-18 05:36:59

标签: ruby

你有没有看到任何缺点(除了明显的猴子补丁)这样做?

class Hash
   def +(other)
     self.merge(other)
   end
end

我发现这非常方便,但也许有些东西我没有考虑,可能会有问题。

1 个答案:

答案 0 :(得分:3)

我没有看到任何重大缺点。一个非常小的缺点是它为调用堆栈增加了额外的级别,使其稍微变慢。为避免这种情况,您可以使用别名:

class Hash
  alias :+ :merge
end

一个好处可能是您可以使用+=语法糖,但我想不出您要使用+=而不是merge!的用例。它们之间的区别在于对象id是否会发生变化。