case文を使った条件分岐

if 文では複数の条件式を組み合わせて複雑な分岐を行う事ができますが、一つの値に対して複数の候補の中で一致するものを探すような場合には case 文を使用すると便利です。ここでは Ruby で case 文を使った条件分岐を行う方法について解説します。

(2021 年 06 月 30 日公開 / 2022 年 10 月 21 日更新)

case文を使った条件分岐

case 文では一つの値に対して複数の候補の中で一致するものを探し、見つかった場合に対応する処理を実行します。次の構文を使用します。

case 対象オブジェクト
when 値1 then
  値1と一致する場合に行う処理
when 値2 then
  値2と一致する場合に行う処理
when 値3 then
  値3と一致する場合に行う処理
else
  どの値にも一致しない場合に行う処理
end

then は省略可能です

まず比較の対象となる対象オブジェクトを指定します。例えば数値オブジェクトや文字列オブジェクトなどです。そして when の後に一致しているかどうかを調べる値を記述します。もし一致すれば then から次の when までの処理を実行します。

case 文は特定のオブジェクトが持つ値がどの値に一致するのかを調べる場合に便利です。もし case 文を if 文を用いて書き直すと次のようにになります。

if 対象オブジェクト === 値1 then
  値1と一致する場合に行う処理
elsif 対象オブジェクト === 値2 then
  値2と一致する場合に行う処理
elsif 対象オブジェクト === 値3 then
  値3と一致する場合に行う処理
else
  どの値にも一致しない場合に行う処理
end

ここで新しい演算子 === が出てきましたが、文字列と文字列を比較したり数値と数値を比較する場合は == と同じと考えて結構です。( === 演算子は別のページで詳しく見ていきます)。

例えば次のように使用します。

sum = 0
product = "Apple"

case product
when "Melon" then
  sum = sum + 500
when "Apple" then
  sum = sum + 150
end

print("料金は", sum, "です")

上記では変数「product」が持っている文字列に一致する値を調べ、合計金額に加算しています。

比較する値として複数の値を指定する

一致しているかどうか調べる値は一度に複数指定することが可能です。

case 対象オブジェクト
when 値1,値2 then
  ...
when 値3,値4,値5 then
  ...
end

複数の値に対して同じ処理を実行する場合は、 when の後に値をカンマ(,)で区切って並べて記述します。上記では「値1」「値2」に一致した場合は同じ処理を行い、「値3」「値4」「値5」に一致した場合は同じ処理を行います。

例えば次のように使用します。

sum = 0
product = "Apple"

case product
when "Melon","Banana" then
  sum = sum + 500
when "Apple","Lemon","Orange" then
  sum = sum + 150
end

print("料金は", sum, "です")
サンプルコード

では簡単なプログラムで確認してみます。

# encoding: UTF-8

sum = 0
product = "Apple"
puts(product)

case product
when "Melon","Banana" then
  sum = sum + 500
  puts("500円")
when "Apple","Lemon","Orange" then
  sum = sum + 150
  puts("150円")
end

product = "Banana"
puts(product)

case product
when "Melon","Banana" then
  sum = sum + 500
  puts("500円")
when "Apple","Lemon","Orange" then
  sum = sum + 150
  puts("150円")
end

puts("合計金額は" + sum.to_s + "円です")

下記のように実行して下さい。

case文

-- --

Ruby で case 文を使った条件分岐を行う方法について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。