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
パターンを整理することで、コードの可読性と保守性が向上します。特に複雑なデータ構造を扱う際に、caseとinを組み合わせると、条件分岐が一目で分かるようになります。
コメント
コメントを投稿