case文を使った条件分岐
if 文では複数の条件式を組み合わせて複雑な分岐を行う事ができますが、一つの値に対して複数の候補の中で一致するものを探すような場合には case 文を使用すると便利です。ここでは Ruby で case 文を使った条件分岐を行う方法について解説します。
(Last modified: )
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 + "円です")
下記のように実行して下さい。
-- --
Ruby で case 文を使った条件分岐を行う方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。