LoginSignup
0
0

Rubyの===について

Last updated at Posted at 2023-06-06

はじめに

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節のオブジェクト(IntegerString)に対して、暗黙的に===演算子が呼び出される。つまり、when Integerは実際にInteger === valueを評価し、それがtrueの場合、そのwhen節が実行される。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0