2

これを行う上で、(モンキー パッチによる明らかな欠点以外に) 欠点はありますか?

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

これは本当に便利だと思いましたが、考えていないことがあり、問題が発生する可能性があります。

4

1 に答える 1

3

大きな欠点は見当たりません。非常に小さな欠点は、呼び出しスタックに余分なレベルが追加され、わずかに遅くなることです。これを回避するには、エイリアスを使用できます。

class Hash
  alias :+ :merge
end

糖衣構文を使用できるという利点もありますが、の代わりに+=使用したいユースケースは考えられません。それらの違いは、オブジェクトIDが変更されるかどうかです。+=merge!

于 2013-02-18T06:10:59.657 に答える