はじめに
Ruby初学者の備忘録です。
リファレンスマニュアル より
メソッド Object#== の別名です。case 式で使用されます。
このメソッドは case 式での振る舞いを考慮して、各クラスの性質に合わせて再定義すべきです。
一般的に所属性のチェックを実現するため適宜再定義されます。
when 節の式をレシーバーとして === を呼び出すことに注意してください。
また Enumerable#grep でも使用されます。
[PARAM] other:
比較するオブジェクトです。
参考:Ruby 3.2 リファレンスマニュアル : instance method Object#===
例
===
は、オブジェクトが特定のクラスやケースに属するかどうかをテストするために使用される。また、case
文の条件分岐では暗黙的に使用される。
1.クラスやモジュールの場合:
p String === "hello" # true
p Integer === 42 # true
p Integer === "42" # false
2.正規表現の場合:
p /^h/ === "hello" # true
p /^x/ === "hello" # false
3.範囲の場合:
p (1..10) == 5 # false
p (1..10) === 5 # true
p (1..10) === 15 # false
4.case
文の条件分岐
when Integer
p "It's an Integer"
when String
p "It's a String"
else
p "It's something else"
end
この例では、when
節のオブジェクト(Integer
やString
)に対して、暗黙的に===
演算子が呼び出される。つまり、when Integer
は実際にInteger === value
を評価し、それがtrue
の場合、そのwhen
節が実行される。