Ruby if、then、elsif 和 else 关键字
最后修改日期:2025 年 4 月 27 日
本教程将解释如何使用 Ruby 的条件语句,包括 if、then、elsif 和 else 关键字。这些结构根据布尔条件控制程序流。
if 关键字用于评估一个条件,并在条件为真时执行代码。then 用于分隔条件和代码块(在大多数情况下是可选的)。
elsif 在前面的条件失败时提供额外的条件进行检查。else 在所有前置条件都为假时执行。这些构成了 Ruby 中的完整条件结构。
基本 if 语句
这个简单的示例演示了条件执行最基本的形式。代码块仅在条件评估为真时运行。
age = 20 if age >= 18 puts "You are an adult" end
首先评估条件 age >= 18。由于 20 大于 18,因此会打印消息。如果没有 if 语句,代码将始终执行。
带 else 子句的 if
添加 else 子句可以在条件失败时提供备用执行路径。这涵盖了条件的所有可能情况。
temperature = 15 if temperature > 25 puts "It's hot outside" else puts "It's not hot outside" end
由于 15 不大于 25,因此执行 else 块。else 子句确保无论条件结果如何,总会执行一些代码。
带 elsif 子句的 if
可以使用 elsif 链接多个条件。Ruby 按顺序检查每个条件,直到其中一个评估为真。
score = 85 if score >= 90 puts "Grade A" elsif score >= 80 puts "Grade B" elsif score >= 70 puts "Grade C" else puts "Grade D" end
第一个假条件 (90) 会跳到 elsif (80),而 85 满足此条件。Ruby 在找到匹配项后停止检查剩余的条件。else 处理所有低于 70 的分数。
使用 then 关键字
then 关键字显式地将条件与代码块分开。虽然通常是可选的,但在某些单行形式中是必需的。
x = 10 if x == 10 then puts "x is 10" end # Multi-line version without then if x == 10 puts "x is 10" end
这两种形式都可以正常工作。then 版本对于简单的条件更紧凑。对于复杂的条件或多个语句,建议使用多行形式以提高可读性。
嵌套的 if 语句
if 语句可以嵌套在其他 if 语句中,以创建复杂的决策树。每个级别都增加了一个需要检查的条件。
age = 25
has_license = true
if age >= 18
if has_license
puts "You can drive"
else
puts "You need a license first"
end
else
puts "You're too young to drive"
end
外部 if 检查年龄,而内部 if 验证许可证状态。嵌套条件应谨慎使用,因为它们可能难以阅读。可以考虑改用逻辑运算符 (&&, ||)。
条件赋值
Ruby 允许以紧凑的形式根据条件分配值。这会将变量赋值与条件逻辑结合起来。
status = if rand(2) == 1
"active"
else
"inactive"
end
puts "Account status: #{status}"
整个 if 表达式评估为“active”或“inactive”,然后将其分配给 status。当条件的结果是主要目的时,这种模式很常见。
修饰符 if 形式
Ruby 为简单条件提供了后缀 if 语法。仅当其后的条件为真时,代码才会执行。
logged_in = true puts "Welcome back!" if logged_in # Equivalent to: if logged_in puts "Welcome back!" end
对于具有简单条件的单条语句,修饰符形式非常简洁。对于复杂条件或多条语句,标准 if 形式更合适。修饰符形式不支持 else 子句。
来源
本教程通过实际示例介绍了 Ruby 的条件语句,展示了基本用法、分支、嵌套和特殊形式。
作者
列出 所有 Ruby 教程。