ZetCode

Ruby if、then、elsif 和 else 关键字

最后修改日期:2025 年 4 月 27 日

本教程将解释如何使用 Ruby 的条件语句,包括 ifthenelsifelse 关键字。这些结构根据布尔条件控制程序流。

if 关键字用于评估一个条件,并在条件为真时执行代码。then 用于分隔条件和代码块(在大多数情况下是可选的)。

elsif 在前面的条件失败时提供额外的条件进行检查。else 在所有前置条件都为假时执行。这些构成了 Ruby 中的完整条件结构。

基本 if 语句

这个简单的示例演示了条件执行最基本的形式。代码块仅在条件评估为真时运行。

basic_if.rb
age = 20

if age >= 18
  puts "You are an adult"
end

首先评估条件 age >= 18。由于 20 大于 18,因此会打印消息。如果没有 if 语句,代码将始终执行。

带 else 子句的 if

添加 else 子句可以在条件失败时提供备用执行路径。这涵盖了条件的所有可能情况。

if_else.rb
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 按顺序检查每个条件,直到其中一个评估为真。

if_elsif.rb
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 关键字显式地将条件与代码块分开。虽然通常是可选的,但在某些单行形式中是必需的。

if_then.rb
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 语句中,以创建复杂的决策树。每个级别都增加了一个需要检查的条件。

nested_if.rb
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 允许以紧凑的形式根据条件分配值。这会将变量赋值与条件逻辑结合起来。

conditional_assignment.rb
status = if rand(2) == 1
           "active"
         else
           "inactive"
         end

puts "Account status: #{status}"

整个 if 表达式评估为“active”或“inactive”,然后将其分配给 status。当条件的结果是主要目的时,这种模式很常见。

修饰符 if 形式

Ruby 为简单条件提供了后缀 if 语法。仅当其后的条件为真时,代码才会执行。

modifier_if.rb
logged_in = true

puts "Welcome back!" if logged_in

# Equivalent to:
if logged_in
  puts "Welcome back!"
end

对于具有简单条件的单条语句,修饰符形式非常简洁。对于复杂条件或多条语句,标准 if 形式更合适。修饰符形式不支持 else 子句。

来源

Ruby 控制表达式文档

本教程通过实际示例介绍了 Ruby 的条件语句,展示了基本用法、分支、嵌套和特殊形式。

作者

我的名字是 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有超过十年的经验。

列出 所有 Ruby 教程