unless文

広告

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

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

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

また「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

サンプルプログラム

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

test8-1.rb

#! ruby -Ku
require "kconv"

old = 40

unless old < 20 then
  print(Kconv.tosjis("年齢は"), old, Kconv.tosjis("です¥n"))
  print(Kconv.tosjis("20歳以上ですのでご利用できます¥n"))
end

上記のプログラムを「test8-1.rb」として保存します。文字コードはUTF-8です。そして下記のように実行して下さい。

unless文

( Written by Tatsuo Ikura )