プロを目指す人のためのRuby入門
演算子の中にも再定義できるものとできないものがある。
再定義できるかどうかはドキュメントを参考にする。
ここでは例として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#==は呼ばれない。
等値を判定するメソッドには4種類ある。
- equal?
- ==
- eql?
- ===
このうちequal?以外は再定義が可能。