跳到主要内容

Rust if...else 语句

提示
  1. ifif..else 语句的使用:在 Rust 中,ifif..else 语句用于基于特定条件执行不同的代码块。
  2. 布尔表达式的概念:布尔表达式在 Rust 中用于返回 truefalse,并用于 if 表达式的条件判断。
  3. Rust 中的多条件和嵌套判断:使用 if..else if 表达式可以评估多个条件,而嵌套 if..else 用于更复杂的条件逻辑。

在计算机编程中,我们使用 ifif..else 语句/表达式来在特定条件满足时运行代码块。

例如,可以根据学生的总成绩为某科目分配成绩。

  • 如果成绩超过 90,分配等级 A
  • 如果成绩超过 75,分配等级 B
  • 如果成绩超过 65,分配等级 C

布尔表达式

在了解 if..else 表达式之前,让我们快速了解一下布尔表达式。

布尔表达式是一个表达式(产生一个值),它返回 truefalse(布尔值)作为输出。例如,

fn main() {
let x = 7;

// 布尔表达式的例子
let condition = x > 5;

println!("condition is {}", condition);
}

输出

condition is true

这里,x > 5 是一个布尔表达式,用于检查变量 x 的值是否大于 5。由于变量 x 的值 7 大于 5condition 变量被赋值为 true

因此,输出为 condition is true

Rust 中的 if 表达式

if 表达式仅在条件为 true 时执行代码块。Rust 中 if 表达式的语法是:

if condition {
// 要执行的代码块
}

如果条件评估为

  • true - if 块内的代码将被执行
  • false - if 块内的代码将不会被执行

Rust 中 if 表达式的工作原理

示例:if 表达式

fn main() {
let number = 10;

// 检查数字是否大于零的条件
if number > 0 {
println!("{} is greater than 0", number);
}

println!("End of program")
}

输出

10 is greater than 0
End of program

在上面的示例中,我们创建了一个变量 number 并检查其值是否大于 0。注意条件

number > 0

由于变量 number 大于 0,条件评估为 true。因此,我们看到大括号内的代码块被执行。

println!("{} is greater than 0", number);

假设我们将 number 变量改为负整数,比如 -2

let number = -2;

输出将会是:

End of program

这是因为条件 **-2 > 0** 的计算结果为 false,所以 if 的主体被跳过了。

Rust 中的 if..else 表达式

if 表达式有时也可以包含一个可选的 else 表达式。如果 if 中的条件为 false,则执行 else 表达式。

Rust 中 if..else 表达式的语法是:

if 条件 {
// 当条件为真时执行
} else {
// 当条件为假时执行
}
  1. 如果条件计算结果为 true
  • if 内的代码块将被执行
  • else 内的代码块将被跳过
  1. 如果条件计算结果为 false
  • if 内的代码块将被跳过
  • else 内的代码块将被执行

Rust 中 if..else 表达式的工作原理

示例:if..else 表达式

fn main() {
let number = -2;

// 检查数字是否大于零的条件
if number > 0 {
println!("{} 大于 0", number);
} else {
println!("{} 小于或等于 0", number);
}
}

输出

-2 小于或等于 0

这里,变量 number 的值为 -2,所以条件 number > 0 的计算结果为 false。因此,else 语句内的代码块被执行了。

如果我们将变量更改为正数,比如说 10。

let number = 10;

程序的输出将会是:

10 大于 0

这里,条件 number > 0 的计算结果为 true。因此,if 语句内的代码块被执行了。

Rust 中的 if..else if 表达式

我们可以通过结合 ifelseelse if 表达式中评估多个条件。如果你需要做出多于两个的选择,if..else if 表达式特别有帮助。ifelse if 表达式的语法看起来像这样:

if 条件1 {
// 代码块 1
} else if 条件2 {
// 代码块 2
} else {
// 代码块 3
}

这里, 1. 如果 condition1 评估为真,

  • 将执行 code block 1
  • 跳过 code block 2code block 3

2. 如果 condition2 评估为真,

  • 将执行 code block 2
  • 跳过 code block 1code block 3

3. 如果 condition1 和 condition2 都评估为假,

  • 将执行 code block 3
  • 跳过 code block 1code block 2

Rust 中 if..else if 表达式的工作原理

示例:if..else if..else 条件语句

fn main() {
let number = -2;

if number > 0 {
println!("{} 是正数", number);
} else if number < 0 {
println!("{} 是负数", number);
} else {
println!("{} 等于 0", number);
}
}

输出

-2 是负数

在这个例子中,我们检查一个数字是正数、负数还是零。因为 number = -2 小于 0,满足条件number < 0,因此执行了 else if 语句块。

嵌套 if..else

你可以在其他 if..else 表达式的主体中使用 if..else 表达式。这在 Rust 中被称为嵌套 if..else

if outer_condition {
// 外部代码块

if inner_condition {
// 内部代码块 1
} else {
// 内部代码块 2
}
}

// if 代码块之外

示例:嵌套 if..else

fn main() {
let number = -2;

if number < 0 {
// 如果外部条件评估为真,则评估内部条件
if number == -2 {
println!("当前数字是 -2");
} else {
println!("当前数字是 {}", number);
}
}
}

输出

当前数字是 -2

在这个例子中,

  1. 外部条件 number < 0 评估为 true,因为变量 number 被赋值为 -2。因此,执行了外部代码块。
  2. 外部代码块包含一个内部条件来检查 number == -2,这也是 true。因此,执行了内部 if 表达式的内部代码块。
  3. 内部代码块向屏幕打印 "当前数字是 -2"。
  4. 因为 inner_condition 评估为 true,所以跳过了内部 else 语句块。