本文介绍了 Rust 语言中的控制流,包括 if
表达式和循环结构(loop
、while
、for
)。if
表达式用于条件判断,循环结构则用于重复执行代码块。文章通过代码示例详细讲解了各种控制流的使用方法,如 else if
处理多重条件、break
和 continue
控制循环流程以及循环标签在嵌套循环中的应用。
在 Rust 中,控制流是一个强大的特性,可以让你决定运行哪些代码以及何时运行它们。无论是基于特定条件执行代码块,还是多次重复代码,控制流都能为你提供构建灵活且智能的程序所需的工具。本文将引导你了解 Rust 中的核心控制流结构——if
表达式和循环。
if
表达式:做出决策if
表达式允许你仅在特定条件为真时执行代码。
例如:
fn main() {
let number = 3;
if number < 5 {
println!("condition was true"); // 条件为真
} else {
println!("condition was false"); // 条件为假
}
}
bool
) 值。不正确的使用示例:
else if
用于处理多个条件你可以使用 else if
处理多个可能的条件:
fn main() {
let number = 6;
if number % 4 == 0 {
println!("divisible by 4"); // 能被 4 整除
} else if number % 3 == 0 {
println!("divisible by 3"); // 能被 3 整除
} else if number % 2 == 0 {
println!("divisible by 2"); // 能被 2 整除
} else {
println!("not divisible by 4, 3, or 2"); // 不能被 4、3 或 2 整除
}
}
a == b
检查 a
的值是否等于 b
的值。if
代码块。==
不是赋值。(那是 =
,用于设置值。)PartialEq
trait(在 Rust 中)时,使用 ==
的相等性比较才有效。Rust 提供了三种类型的循环:
loop
while
for
使用 loop
进行无限循环
fn main() {
loop {
println!("again!"); // 再次!
}
}
结果显示存在 “again” 的无限循环。 我必须取消它才能终止循环。
使用 break
退出,或使用 continue
跳到下一次迭代。
返回值:
fn main() {
let mut counter = 0;
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2;
}
};
println!("The result is {result}"); // 结果是 {result}
}
2. 嵌套循环的循环标签
在 Rust 中使用嵌套循环时,默认情况下,break
和 continue
只会影响它们出现的最内层循环。 但是 Rust 为你提供了一个强大的工具来控制更复杂的流程:循环标签。
循环标签是你分配给特定循环的名称,以便你可以精确地控制 break
或 continue
应用于哪个循环——即使在深度嵌套的循环中也是如此。
'
) 开头,后跟标签名称。loop
、while
或 for
关键字之前。break 'label
或 continue 'label
来专门影响该循环。fn main() {
let mut count = 0;
'counting_up: loop {
println!("count = {count}"); // count = {count}
let mut remaining = 10;
loop {
println!("remaining = {remaining}"); // remaining = {remaining}
if remaining == 9 {
break; // exits the *inner* loop only // 仅退出*内部*循环
}
if count == 2 {
break 'counting_up; // exits the *outer* loop // 退出*外部*循环
}
remaining -= 1;
}
count += 1;
}
println!("End count = {count}"); // 结束计数 = {count}
}
结果
如果我们只使用 break
而不是 break 'counting_up
,则只会退出内部循环,而外部循环将继续运行。
在以下情况下使用循环标签:
并非每个嵌套循环都需要它们,但是当控制流变得复杂时,它们有助于消除歧义并提高可读性。
- 原文链接: medium.com/@estheraladio...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!