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 のほうが自然に読めることがよくあります。「その条件が真でない限り、これを実行する」と考えてください。
unlessはelseと一緒に使うこともできます。
age = 20
unless age < 18
puts "Access granted"
else
puts "Access denied"
endただし、elseブロックが必要な場合は、通常ifを使うほうが明確です。unless文は、別の処理経路を伴わない単純な否定条件がある場合に役立ちます。ひと目で読みやすいコードになるほうを選びましょう。
チャレンジ
簡単次の変数が用意されています。
has_ticket = false
is_vip = true
items_in_cart = 0
battery_level = 15
is_charging = falseunless 文を使って、以下の各状況を評価してください。条件が偽の場合(つまり、unless がブロックを実行する場合)に限り、指定されたメッセージを出力してください。
has_ticketがtrueでない場合、Please purchase a ticketを出力するis_vipがtrueでない場合、VIP access requiredを出力するitems_in_cartが0より大きくない場合、Your cart is emptyを出力するbattery_levelが20より大きくない場合、Low battery warningを出力するis_chargingがtrueでなく、かつbattery_levelが50より大きくない場合、Please charge your deviceを出力する
各メッセージはそれぞれ別の行に出力してください。unless ブロックが実行される条件に該当するメッセージだけを出力してください。
自分で試してみよう
# 変数はすでに定義されています
has_ticket = false
is_vip = true
items_in_cart = 0
battery_level = 15
is_charging = false
# TODO: 以下にコードを書いてください
# unless 文を使って各条件を確認し、適切なメッセージを表示してくださいこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Rubyオンラインコンパイラ