unless文を使った条件分岐

if 文では条件式が「真」の場合にそのあとの処理を実行しますが、 unless 文では逆に条件式が「偽」の場合にそのあとの処理を実行します。ここでは Ruby で unless 文を使った条件分岐を記述する方法について解説します。

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

unless文を使った条件分岐

if 文と同じく条件によって処理を分けたい場合に使用するのが unless 文です。 unless 文の書式は次のようになっています。

if 条件式 then
  条件式が真の時に実行する処理1
  条件式が真の時に実行する処理2
  ...
end

if文では条件式が真かどうかで処理を分けますが似た制御構造を持つものとしてunless文があります。unless文は条件式が偽の場合の処理を記述するのに使われます。書式は次の通りです。

unless 条件式 then
  条件式が偽の時に実行する処理
end

条件式が「偽」だった場合は then から end までの間に書かれた処理を上から順に実行します。条件式が「真」だった場合は end の次へ処理が移ります。このように unless 文を使用することで、条件式が「偽」だった場合だけ特定の処理を実行するといったことが可能になります。

また if 文と同じく else 節も使用できます。

unless 条件式 then
  条件式が偽の時に実行する処理
else
  条件式が真の時に実行する処理
end

条件式を評価し、条件式が「偽」だった場合に then から else までの処理を実行し、条件式が「真」だった場合に else から end までの処理を実行します。

elsif 節は unless 文にはありません。また unless...else...end に相当する処理を行いたい場合は if 文を使って次のように記述できますのであまり使用されることはありません。

if !条件式 then
  条件式が偽の時に実行する処理
else
  条件式が真の時に実行する処理
end

unless 文は条件式に否定演算子「!」を付け加えることで if 文で書き換えることが出来ますが、条件式の記述をする時に「条件が偽ならば...をする」といった記述をした方が意味が分かりやすい場合などに利用できます。

例えば次のように使用します。

old = 40

unless old < 20 then
  print("20歳以上ですのでご利用できます")
end

これは if 文で次のように記述できます。

old = 40

if old >= 20 then
  print("20歳以上ですのでご利用できます")
end

また次のようにも記述できます。

old = 40

if !(old < 20) then
  print("20歳以上ですのでご利用できます")
end
サンプルコード

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

# encoding: UTF-8

old = 40
puts("年齢は " + old.to_s + " です")

unless old < 20 then
  puts("20歳以上ですのでご利用できます")
else
  puts("20歳未満の方はご利用できません")
end

puts()

old = 18
puts("年齢は " + old.to_s + " です")

unless old < 20 then
  puts("20歳以上ですのでご利用できます")
else
  puts("20歳未満の方はご利用できません")
end

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

unless文

-- --

Ruby で unless 文を使った条件分岐を記述する方法について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

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