学習記録
2020-10-05に投稿

プロを目指す人のためのRuby入門

7.10.4 演算子の挙動を独自に再定義する

演算子の中にも再定義できるものとできないものがある。

再定義できるかどうかはドキュメントを参考にする。

ここでは例としてProductクラス同士を下記のように比較できるように再定義する。

a = Product.new('A-0001')
b = Product.new('B-0002')
c = Product.new('A-0001')
a != b  #=> true
a == c  #=> true
a != 1  #=> true
class Product
  def ==(other)
    if other.is_a?(Product)
      code == other.code
    end
  end
end

補足

==はメソッドなので先頭に.をつけて呼ぶことができる。

a.==(c) #=> true

また、==が呼び出されるのは左辺のオブジェクトなので、
右辺に書いた場合はProduct#==は呼ばれない。

7.10.5 等値を判断するメソッドや演算子を理解する

等値を判定するメソッドには4種類ある。
- equal?
- ==
- eql?
- ===
このうちequal?以外は再定義が可能。


dychw
学習記録
所有者限定モードのためこのボードには投稿できません
コメント
学習記録