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

if 文では複数の条件式を使用して、より複雑な条件分岐を行うことができます。ここでは Ruby の if 文で複数の条件式を使ったより複雑な条件分岐を行う方法について解説します。

(2021 年 06 月 30 日公開 / 2022 年 10 月 20 日更新)

複数の条件式を使った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

下記のように実行して下さい。

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

-- --

Ruby の if 文で複数の条件式を使ったより複雑な条件分岐を行う方法について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。