在计算机编程中,我们使用 if
和 if..else
语句/表达式在满足特定条件时运行一段代码。
例如,可以根据学生的总分为其分配科目成绩。
- 如果分数高于 90,则分配 A 级
- 如果分数高于 75,则分配 B 级
- 如果分数高于 65,则分配 C 级
布尔表达式
在学习 if..else
表达式之前,让我们快速了解一下布尔表达式。
布尔表达式是一个表达式(产生一个值),它返回 true
或 false
(布尔值)作为输出。例如,
fn main() {
let x = 7;
// example of boolean expression
let condition = x > 5;
println!("condition is {}", condition);
}
输出
condition is true
在这里,x > 5
是一个布尔表达式,它检查变量 x
的值是否大于 5
。由于 7
,变量 x
的值大于 5
,因此 condition
变量被赋值为 true
。
因此,可以看到输出为“condition is true
”。
Rust if 表达式
if
表达式仅当条件为 true
时执行代码块。Rust 中 if
表达式的语法是:
if condition {
// code block to execute
}
如果条件计算结果为:
true
- 将执行if
块内的代码false
- 将不执行 if 块内的代码

示例:if 表达式
fn main() {
let number = 10;
// condition to check if number is greater than zero
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 condition {
// executes when condition is true
} else {
// executes when condition is false
}
1. 如果条件计算结果为 true
,
- 将执行
if
内的代码块 - 将跳过
else
内的代码块
2. 如果条件计算结果为 false
,
- 将跳过
if
块内的代码 - 将执行
else
块内的代码

示例:if..else 表达式
fn main() {
let number = -2;
// condition to check if number is greater than zero
if number > 0 {
println!("{} is greater than 0", number);
} else {
println!("{} is less than or equal to 0", number);
}
}
输出
-2 is less than or equal to 0
在这里,变量 number 的值为 -2
,因此条件 number > 0
的计算结果为 false
。因此,将执行 else
语句内的代码块。
如果我们把变量改为一个正数。比如 10。
let number = 10;
程序的输出将是:
10 is greater than 0
在这里,条件 number > 0
的计算结果为 true
。因此,将执行 if
语句内的代码块。
Rust if..else if 表达式
通过将 if
和 else
组合成 else if
表达式,我们可以评估多个条件。如果需要做出两个以上的选择,if..else if
表达式特别有用。if
与 else if
表达式的语法如下:
if condition1 {
// code block 1
} else if condition2 {
// code block 2
} else {
// code block 3
}
这里,
1. 如果 condition1 计算结果为 true,
- 将执行
code block 1
- 将跳过
code block 2
和code block 3
2. 如果 condition2 计算结果为 true,
- 将执行
code block 2
- 将跳过
code block 1
和code block 3
3. 如果 condition1 和 condition2 的计算结果均为 false,
- 将执行
code block 3
- 将跳过
code block 1
和code block 2

示例:if..else if..else 条件
fn main() {
let number = -2;
if number > 0 {
println!("{} is positive", number);
} else if number < 0 {
println!("{} is negative", number);
} else {
println!("{} is equal to 0", number);
}
}
输出
-2 is negative
在此示例中,我们检查一个数字是正数、负数还是零。因为 number = -2
小于 0
,满足条件:number < 0
,因此将执行 else if 块。
嵌套 if..else
您可以在其他 if..else
表达式的主体中使用 if..else
表达式。它在 Rust 中被称为嵌套 if..else
。
if outer_condition {
// outer code block
if inner_condition {
// inner code block 1
} else {
// inner code block 2
}
}
// outside if code block
示例:嵌套 if..else
fn main() {
let number = -2;
if number < 0 {
// if outer condition evaluates to true evaluate the inner condition
if number == -2 {
println!("The current number is -2");
} else {
println!("The current number is {}", number);
}
}
}
输出
The current number is -2
在此示例中,
- 因为
number
变量被赋值为-2
,所以外部条件number < 0
的计算结果为true
。因此,将评估外部代码块。 - 外部代码块包含一个内部条件来检查
number == -2
,这再次为true
。因此,将执行内部if
表达式的内部代码块。 - 内部代码块将“
The current number is -2
”打印到屏幕。 - 由于
inner_condition
的计算结果为true
,因此将跳过内部else
块。