Rubyのcase文は、条件によって処理を分岐させる便利な構文です。特に、whenに複数の値をカンマ区切りで指定した場合の挙動について解説します。
複数値を指定したwhenの意味
Rubyでは、case式のwhenに複数の値をカンマ区切りで指定すると、そのどれか1つにマッチすればそのブロックが実行されます。つまり、カンマは「または(OR)」の意味になります。
例を見てみましょう。
fruit = 'apple'
case fruit
when 'apple', 'banana', 'orange'
puts 'フルーツです'
else
puts 'フルーツではありません'
end
上記の例では、fruitが’apple’, ‘banana’, ‘orange’のいずれかに一致すれば「フルーツです」が出力されます。
複数値指定の注意点
- カンマ区切りで指定できるのはリテラルや変数など、直接比較可能な値です。
- 式や範囲オブジェクトを組み合わせる場合は別の書き方が必要です。
- whenの値は順番に評価され、最初に一致したブロックが実行されます。
範囲オブジェクトや条件式との組み合わせ
範囲オブジェクトやメソッド呼び出しもwhenで利用できます。
score = 85
case score
when 0..59
puts '不可'
when 60..79
puts '可'
when 80..100
puts '優'
end
この場合も、スコアがどの範囲に入るかで処理が分かれます。
まとめ
Rubyのcase文でwhenに複数値をカンマ区切りで指定した場合、指定されたどれかの値に一致するとブロックが実行されます。複数値指定は「いずれかに一致」という意味で、複数のケースをまとめて処理したいときに便利です。範囲オブジェクトや式を組み合わせれば、さらに柔軟な条件分岐が可能です。


コメント