2

您是否看到这样做的任何缺点(除了猴子修补的明显缺点)?

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

我发现这真的很方便,但也许有一些我没有考虑并且可能有问题的东西。

4

1 回答 1

3

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

class Hash
  alias :+ :merge
end

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

于 2013-02-18T06:10:59.657 回答