複数の条件分岐(if...elsif...else...end)
「if」文では単独の条件分岐だけではなく複数の条件分岐を使って処理を分けることが出来ます。これには「if...elsif...else...end」文を使用します。書式は次の通りです。
if 条件式1 then 条件式1が真の時に実行する処理 elsif 条件式2 then 条件式1が偽で条件式2が真の時に実行する処理 elsif 条件式3 then 条件式1及び条件式2が偽で条件式3が真の時に実行する処理 else 全ての条件式が偽の時に実行する処理 end
まず条件式1が評価されます。条件式が真だった場合は「then」から次の「elsif」までの処理を実行します。
次に条件式1が偽だった場合には条件式2が評価されます。条件式が真だった場合は「then」から次の「elsif」までの処理を実行します。同じように条件式1と条件式2が共に偽だった場合に条件式3が評価されます。
そして全ての条件式が偽だった場合に「else」から「end」までの処理を実行します。
「elsif」は必要な数だけ記述することが出来ます。また「else」節の部分は必要無ければ記述しなくても構いません。
次の例ではif文の条件式として順に文字列を比較しています。
city = "Nagoya" if city == "Tokyo" then print("東京です") elsif city == "Osaka" then print("大阪です") elsif city == "Nagoya" then print("名古屋です") else print("その他の都市です") end
上記では上から順に条件式を評価していき「city == "Nagoya"」の条件式が真(true)となるため「print("名古屋です")」が実行されます。
条件式を上から順に評価していき真(true)となった時点でその後の条件式は評価されない点に注意して下さい。
サンプルプログラム
では簡単なプログラムで確認して見ます。
#! ruby -Ku require "kconv" city = "Nagoya" print(Kconv.tosjis("出身地は")) if city == "Tokyo" then print(Kconv.tosjis("東京")) elsif city == "Osaka" then print(Kconv.tosjis("大阪")) elsif city == "Nagoya" then print(Kconv.tosjis("名古屋")) else print(Kconv.tosjis("その他の都市")) end print(Kconv.tosjis("です¥n"))
上記のプログラムを「test7-1.rb」として保存します。文字コードはUTF-8です。そして下記のように実行して下さい。
( Written by Tatsuo Ikura )