スキップしてメイン コンテンツに移動

case文で===演算子

case文で===演算子

Ruby基礎とcase文の概要

Rubyでは条件分岐を行う際に、if文だけでなくcase文を使うことが多いです。case文は「多方向分岐」を簡潔に書くための構文で、値やオブジェクトを比較し、最適なブロックを実行します。Rubyのcaseは、内部で===演算子を呼び出して比較を行うため、クラスや正規表現、範囲など多様なパターンに対応できます。

case, when, then, else の使い方

基本的な構文は以下のようになります。

case 変数
when 条件1 then
  # 条件1にマッチしたときの処理
when 条件2
  # 条件2にマッチしたときの処理
else
  # どれにもマッチしなかったときの処理
end

thenは省略可能で、whenの直後に改行してブロックを記述するスタイルも一般的です。elseは必須ではありませんが、予期しない値に対して安全に処理を行いたい場合に便利です。

多方向分岐と===演算子

Rubyのcaseは、===演算子を使って比較します。これは「ケース等価演算子」と呼ばれ、以下のように動作します。

  • 数値や文字列のクラスでは、===は等価比較と同じ。
  • 正規表現では、===はマッチ判定。
  • 範囲(1..5)では、===は範囲内判定。
  • 配列では、===は要素の存在判定。

この仕組みを利用すると、以下のように柔軟な条件分岐が可能です。

case value
when 1..10
  puts "1から10の間"
when /foo/
  puts "fooを含む文字列"
when [1, 2, 3]
  puts "配列に含まれる"
else
  puts "その他"
end

マッチングとパターン整理

Ruby 3.0以降では「パターンマッチング」機能が導入され、case文をさらに強化しました。inキーワードを使って、構造化されたデータを簡潔に検査できます。

case data
in {name:, age: 18..30}
  puts "若年層: #{name}"
in [first, second, *rest]
  puts "配列の先頭2要素: #{first}, #{second}"
else
  puts "その他のデータ"
end

パターンを整理することで、コードの可読性と保守性が向上します。特に複雑なデータ構造を扱う際に、caseinを組み合わせると、条件分岐が一目で分かるようになります。

この記事はAIによって作成されました。

コメント