複数の条件分岐(if...elsif...else...end)
if 文では複数の条件式を使用して、より複雑な条件分岐を行うことができます。ここでは Ruby の if 文で複数の条件式を使ったより複雑な条件分岐を行う方法について解説します。
(Last modified: )
複数の条件式を使ったif文
if 文では単独の条件分岐だけではなく複数の条件分岐を使って処理を分けることができます。これには if...elsif...else...end 文を使用します。次の構文を使用します。
if 条件式1 then 条件式1が真の時に実行する処理 elsif 条件式2 then 条件式1が偽で条件式2が真の時に実行する処理 elsif 条件式3 then 条件式1及び条件式2が偽で条件式3が真の時に実行する処理 else 全ての条件式が偽の時に実行する処理 end
まず条件式 1 が評価されます。条件式 1 が「真」だった場合は条件式 1 のあとの then から次の elsif までの処理を実行します。
条件式 1 が「偽」だった場合には条件式 2 が評価されます。条件式 2 が「真」だった場合は条件式 2 のあとの then から次の elsif までの処理を実行します。
条件式 1 および条件式 2 が「偽」だった場合には条件式 3 が評価されます。条件式 3 が「真」だった場合は条件式 3 のあとの then から次の elsif までの処理を実行します。
条件式 1 から条件式 3 までのすべてのの条件式が「偽」だった場合、 else から end までの処理を実行します。
elsif は必要な数だけ記述することができます。また else の部分は必要無ければ記述しなくても構いません。
※else if ではなく elsif ですので注意して下さい。
次の例では if 文の条件式として順に文字列を比較しています。
city = "Nagoya"
if city == "Tokyo" then
puts("東京です")
elsif city == "Osaka" then
puts("大阪です")
elsif city == "Nagoya" then
puts("名古屋です")
else
print("その他の都市です")
end
上記では上から順に条件式を評価していき city == "Nagoya" の条件式が「真」となるため puts("名古屋です") が実行されます。
条件式を上から順に評価していき「真」となった時点でそれ以降の条件式は評価されない点に注意して下さい。
では簡単なプログラムで確認してみます。
# encoding: UTF-8
city = "Nagoya"
print("出身地は")
if city == "Tokyo" then
puts("東京です")
elsif city == "Osaka" then
puts("大阪です")
elsif city == "Nagoya" then
puts("名古屋です")
else
print("その他の都市です")
end
下記のように実行して下さい。
-- --
Ruby の if 文で複数の条件式を使ったより複雑な条件分岐を行う方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。