Ruby の #== と #=== の違い
Ruby には比較演算子 #==
の他にも #===
という演算子を定義する事ができます。
ここから #===
について引用すると
メソッド Object#== の別名です。 case 式で使用されます。このメソッドは case 式での振る舞いを考慮して、 各クラスの性質に合わせて再定義すべきです。 一般的に所属性のチェックを実現するため適宜再定義されます。 when 節の式をレシーバーとして === を呼び出すことに注意してください。 また Enumerable#grep でも使用されます。
基本的には #==
と同等で case 式で使用される為の演算子になります。
class Even def self.=== n n % 2 == 0 end end class Odd def self.=== n n % 2 != 0 end end def test n case n when Even "even" when Odd "odd" end end test 10 # => "even" test 7 # => "odd"
また、それ以外にも Enumerable#grep
でも参照されるようです。