syntax中級

Ruby の `case/when` で範囲(Range)を使った条件分岐は可能ですか?

  • 不可能。when には値のみ指定できる
  • 可能。`when 1..10` のように書ける
  • 可能だが、`when range_include?(n)` と書く必要がある
  • 可能だが、Integer の場合のみ

解説

`case/when` は `===`(case equality)演算子を使って比較します。Range の `===` は値が範囲内に含まれるかを判定するため、`when 1..10` のように範囲を直接書けます。正規表現(パターンマッチ)やクラス名(型チェック)も `when` に使えます。