Rust while 循环
提示
- 基本使用:在 Rust 中,
while
循环用于在给定条件为true
时反复执行代码块。 - 循环控制:
while
循环持续执行直到其条件变为false
。循环内部可以修改计数器或状态变量来控制何时退出循环。 - 嵌套和无限循环:
while
循环可以嵌套在其他while
循环内,形成嵌套循环。使用始终为true
的条件可以创建无限循环,但需谨慎使用以避免程序卡死。
我们使用 while
循环在条件为 true
时执行代码块。while
表达式的语法为:
while condition {
// 代码块
}
// while 循环外的代码块
在这里,while
循环在继续执行之前会评估条件。
如果条件评估为:
-
true
- while 循环内的代码块将被执行,并再次评估条件 -
false
- 循环终止,并执行 while 循环外的代码块
示例:Rust 中的 while 循环
fn main() {
let mut counter = 1;
// while 循环的使用
while counter < 6 {
println!("{}", counter);
counter += 1;
}
}
输出
1
2
3
4
5
在上面的例子中,我们有一个条件:
while counter < 6 {
// 代码块
}
在这里,只要 counter
变量小于 6
,循环就会持续运行。在循环内部,我们将 counter
的值增加 1
。
第五次迭代后,counter
的值将为 6
,所以条件counter < 6
变为 false
,循环终止。
注意:while
表达式通常与帮助在满足特定条件后退出循环的计数器变量一起使用。
Rust 中 while 表达式的工作原理
无限 while 循环
您可以使用 while
表达式编写一个永不结束的循环。让我们看一个例子,
fn main() {
let counter = 1;
// while 循环的条件总是评估为 true
while counter < 6 {
println!("永远循环!");
}
}
输出
永远循环!
永远循环!
永远循环!
.
.
.
这个示例代码将无限期地打印“永远循环!”,因为条件counter < 6
总是评估为 true
。这是因为我们在循环内部从未增加 counter
变量的值。因此,这个程序将一直运行,直到用户终止程序。
注意: 您可以使用 break
关键字在 Rust 中终止任何类型的循环。
示例:使用 while 循环打印乘法表
fn main() {
// 打印乘法表的变量
let i = 2;
// 从 1 开始的计数器变量
let mut j = 1;
// 循环运行 10 次的 while 循环
while j <= 10 {
// 乘以 i 和 j
let mult = i * j;
// 每次迭代打印乘法结果
println!("{} * {} = {}", i, j, mult);
// 增加计数器变量 j 的值
j += 1;
}
}
输出
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
2 * 10 = 20
嵌套 while 循环
我们可以在另一个 while
循环的主体内使 用 while
循环。这被称为嵌套 while
循环。嵌套 while
循环的样子如下:
while 外部条件 {
// 外部代码块 1
while 内部条件 {
// 内部代码块
}
// 外部代码块 2
}
让我们使用嵌套 while
循环打印一个图案,
fn main() {
// 外部循环计数 器
let mut i = 1;
// 外部循环
while i <= 5 {
// 内部循环计数器
let mut j = 1;
// 内部循环
while j <= 5 {
print!("*");
// 增加内部循环计数器
j += 1;
}
println!("");
// 增加外部循环计数器
i += 1;
}
}
输出
*****
*****
*****
*****
*****
在上述示例中,
- 外部
while
循环迭代了5
次 - 外部
while
循环内的内部while
循环也迭代了5
次 - 内部
while
循环在每次迭代时打印一个星号(*
)→print!(*)
- 当计数器变量
j
达到6
时,内部while
循环停止,因为内部条件评估为false
- 外部
while
循环在每次迭代后打印一个新行 →println!("")
,然后进入下一次迭代,这将再次启动内部while
循环 - 当计数器变量
i
达到6
时,外部while
循环停止,因为外部条件评估为false