本文へスキップ
BecomeCoder

Rubyコース · 第2章 条件分岐と繰り返し · レッスン8

unlessと後置if ― 修飾子で短く書く

ブラウザで完結

導入

「〜でなければ」という条件を書きたいとき、if !条件 と書くよりも読みやすい書き方が Ruby には用意されています。また、1行で済む処理は、条件を後ろに置いて短く書くこともできます。

説明

unlessif の逆で、「条件が成り立たないとき」に実行されます。

age = 15

unless age >= 18
  puts "未成年です"
else
  puts "成人です"
end

処理が1行だけなら、**条件を文の後ろに置く「後置if / 後置unless」(修飾子)**という書き方もよく使われます。

puts "OK" if age >= 18
puts "まだ早い" unless age >= 18

unlesselse を付けることはできますが、ifelse の組み合わせのほうが読みやすいことが多く、unless は基本的に「else なしの単純な否定条件」で使うのがおすすめです。

やってみよう

age の値を変えて、unless ブロックと後置 if/unless の結果がどちらも連動して変わることを確認しましょう。

演習

変数 stock0 を代入し、後置 if を使って stock == 0 のとき "在庫切れです" と表示してください。

ヒント1を見る

puts "在庫切れです" if stock == 0 の1行で書けます。

ヒント2を見る

後置ifは「処理 if 条件」の順番です。

実際に動かしてみよう

下のエディタにRubyを書いて「実行」を押すと、学習用シミュレータが puts / print / p の出力を表示します(本物のRubyではなく、教材の範囲を再現した軽量な自作エンジンです)。配列・ハッシュ・ブロック(each/map/select)・メソッド・クラス・モジュール・例外なども動きます。本文の例を書き換えて動かしてみましょう(gem・Rails・ファイル入出力など一部の機能は対象外です。文字列を伸ばすときは str << も可能ですが、変数に反映されるのは str += です)。

Ruby — ブラウザ内で実行(学習用シミュレータ)

Rubyの教材サブセットを動かす学習用シミュレータを読み込みます(本物のRubyではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。