Menu
Coddy logo textTech

Unless 文

CoddyのRubyジャーニー「基礎」セクションの一部 — レッスン 25/88。

Rubyは、何かが真でない場合にのみコードを実行したいときに、条件を表現するユニークな方法を提供しています。unless文は、本質的にifの反対です。

ifを使うと、条件が真(true)のときにコードが実行されます。unlessを使うと、条件が偽(false)のときにコードが実行されます:

logged_in = false

unless logged_in
  puts "Please log in to continue"
end

これは if !logged_in と書くのと同等ですが、unless のほうがより自然に読めることが多いです。「その条件が真でない限り、これを行う」と考えてください。

また、unlesselse と一緒に使うこともできます:

age = 20

unless age < 18
  puts "Access granted"
else
  puts "Access denied"
end

しかし、elseブロックが必要な場合は、通常ifを使用する方が明快です。unless文は、代替のパスがない単純な否定条件の場合に真価を発揮します。一目でコードが読みやすくなる方を選択してください。

challenge icon

チャレンジ

簡単

以下の変数が提供されています:

has_ticket = false
is_vip = true
items_in_cart = 0
battery_level = 15
is_charging = false

unless 文を使用して、以下の各シナリオを評価してください。条件が偽(unless がブロックを実行するタイミング)の場合のみ、指定されたメッセージを出力してください。

  1. has_tickettrue でない限り、"Please purchase a ticket" と出力してください
  2. is_viptrue でない限り、"VIP access required" と出力してください
  3. items_in_cart0 より大きくない限り、"Your cart is empty" と出力してください
  4. battery_level20 より大きくない限り、"Low battery warning" と出力してください
  5. is_chargingtrue であるか、または battery_level50 より大きくない限り、"Please charge your device" と出力してください

各メッセージはそれぞれの行に表示される必要があります。unless ブロックをトリガーする条件のメッセージのみを出力してください。

チートシート

unless 文は、条件が 偽 (false) のときにコードを実行します。これは if の反対です。

logged_in = false

unless logged_in
  puts "Please log in to continue"
end

これは if !logged_in と同等ですが、多くの場合、より自然に読むことができます。

unlesselse と一緒に使うこともできます。

age = 20

unless age < 18
  puts "Access granted"
else
  puts "Access denied"
end

ただし、unlesselse ブロックのない単純な否定条件に使用するのが最適です。別のパスが必要な場合は、通常 if の方が明確です。

自分で試してみよう

# 変数はすでに定義されています
has_ticket = false
is_vip = true
items_in_cart = 0
battery_level = 15
is_charging = false

# TODO: 以下にコードを書いてください
# unless文を使用して各条件をチェックし、適切なメッセージを表示してください
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン