複数の条件分岐(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」節の部分は必要無ければ記述しなくても構いません。

※else if ではなく elsif ですので注意して下さい

次の例では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)となった時点でその後の条件式は評価されない点に注意して下さい。

サンプルプログラム

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

test7-1.rb

#! 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です。そして下記のように実行して下さい。

複数の条件分岐(if...elsif...else...end)

( Written by Tatsuo Ikura )