marg-do's

関数型生活

Rangeオブジェクトにおけるcase等値演算子の定義とcase文

Rangeオブジェクトにおいてcase等値演算子(===)は以下のように定義される。
左辺(Rangeオブジェクト)が示す範囲内に右辺の値が属していればtrue、それ以外はfalse。

(1..10) === 4 #=> true
(1..10) === 10 #=> true
(1..10) === 10.1 #=> false

case文においては以下のように処理される

x = 5

case x
when 0..10
   puts "0 <= #{x} <= 10"
when 10..100
   puts "10 <= #{x} <= 100"
else
   puts "error"
end

#=> "0<=5<=10"

case文では、case直後にある式を右辺、when直後にある式を左辺として、case等値演算子で評価している。