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
サンプルプログラム
では簡単なプログラムで確認して見ます。
#! 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です。そして下記のように実行して下さい。
( Written by Tatsuo Ikura )