Menu
CoddyTech

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 语句会更合适。选择能让代码一目了然的写法。

challenge icon

挑战

简单

已为你提供以下变量:

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

使用 unless 语句来检查以下每种情况。只有当条件为假时才输出指定消息(此时 unless 会执行代码块)。

  1. 如果 has_ticket 不是 true,输出 Please purchase a ticket
  2. 如果 is_vip 不是 true,输出 VIP access required
  3. 如果 items_in_cart 不大于 0,输出 Your cart is empty
  4. 如果 battery_level 不大于 20,输出 Low battery warning
  5. 如果 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 语句检查每个条件,并打印相应的消息
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Ruby 在线编译器