在计算机编程中,我们使用 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块。