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 教程。