【Ruby3.x】Range::===()メソッドの使い方
===メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
===メソッドは、Rangeオブジェクトが指定された値がその範囲内に含まれているかどうかを判定するために実行するメソッドです。このメソッドは「ケース等価演算子」とも呼ばれ、特にRubyのcase文において、when節で範囲を指定する際に利用されます。
具体的には、range_obj === valueという形で使用すると、range_obj.include?(value)と同じ結果を返します。つまり、valueがrange_objで定義された数値や文字などの連続した範囲内に位置していればtrueを返し、そうでなければfalseを返します。
例えば、プログラムで年齢に応じて異なる処理を行いたい場合を考えます。
age = 25
case age
when 0..19
puts "未成年です"
when 20..64
puts "成人です"
else
puts "高齢者です"
end
この例では、when 20..64の部分で、内部的に(20..64) === ageという比較が実行されています。ageの値である25が20から64の範囲に含まれるため、この式はtrueを返し、「成人です」と出力されます。
このように、===メソッドはRangeオブジェクトが保持する最小値と最大値の間に引数の値が存在するかどうかを効率的にチェックでき、条件分岐をシンプルかつ直感的に記述するための強力なツールです。数値の範囲だけでなく、文字列や他の比較可能なオブジェクトが範囲として定義されている場合にも同様に機能します。
構文(syntax)
1(1..10) === 5
引数(parameters)
req
- object value: 範囲に含まれるか判定したい値
戻り値(return)
true または false
指定された値が、この範囲内に含まれているかどうかを真偽値で返します。