本文へスキップ
BecomeCoder

Rubyコース · 第2章 条件分岐と繰り返し · レッスン9

case/when ― 複数の値を分かりやすく分岐する

ブラウザで完結

導入

if/elsif を何個も並べると、1つの変数の値によって分岐しているのに読みにくくなることがあります。そんなときは case/when を使うとすっきり書けます。

説明

case 変数 のあと、when 値 を並べて分岐します。

signal = "yellow"

case signal
when "red"
  puts "止まれ"
when "yellow"
  puts "注意"
when "green"
  puts "進め"
else
  puts "不明な信号"
end

when には範囲(Range)も書けます。値がその範囲に含まれるかどうかで分岐します。

score = 85
case score
when 90..100
  puts "優"
when 70...90
  puts "良"
else
  puts "可"
end

90..100 は90から100まで(100を含む)、70...90 は70から90未満(100を含まない ... は3つドット)を表す範囲です。範囲については後のレッスンでもう少し詳しく扱います。

やってみよう

signalscore の値をいろいろ変えて、どの when に当てはまるか確かめましょう。when の行を1つ増やしてみるのもよい練習です。

演習

変数 day"sat" を代入し、case/when"sat""sun" なら "休日"、それ以外なら "平日" と表示してください(when に複数の値をカンマ区切りで書けます)。

ヒント1を見る

when "sat", "sun" のようにカンマで複数の値をまとめられます。

ヒント2を見る

case daywhen "sat", "sun"else の順です。

実際に動かしてみよう

下のエディタにRubyを書いて「実行」を押すと、学習用シミュレータが puts / print / p の出力を表示します(本物のRubyではなく、教材の範囲を再現した軽量な自作エンジンです)。配列・ハッシュ・ブロック(each/map/select)・メソッド・クラス・モジュール・例外なども動きます。本文の例を書き換えて動かしてみましょう(gem・Rails・ファイル入出力など一部の機能は対象外です。文字列を伸ばすときは str << も可能ですが、変数に反映されるのは str += です)。

Ruby — ブラウザ内で実行(学習用シミュレータ)

Rubyの教材サブセットを動かす学習用シミュレータを読み込みます(本物のRubyではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。