複数の条件分岐(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
プログラミングや開発環境構築の解説サイトを運営しています。