読者です 読者をやめる 読者になる 読者になる

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 でも参照されるようです。