📅  最后修改于: 2023-12-03 15:34:46.672000             🧑  作者: Mango
在 Rust 中,while 循环用于重复执行一段代码直到条件为假为止。它的语法与其他语言类似,如下所示:
while condition {
// code to be executed
}
其中 condition
是一个布尔表达式,将在每次循环开始时进行评估。如果它的值为 true,则执行循环体中的代码;如果它的值为 false,则跳过循环体并退出循环。
以下是一个简单的示例,它使用 while 循环来计算一个数字的阶乘:
fn main() {
let mut n = 5;
let mut result = 1;
while n > 0 {
result *= n;
n -= 1;
}
println!("5! = {}", result);
}
在这个例子中,我们初始化了一个 n
变量,它的值为 5。我们还初始化了一个 result
变量,它的值为 1。然后我们使用 while 循环来重复执行以下操作:
n
乘以 result
,并将结果存储在 result
变量中。n
减 1。我们在循环体中使用 mut
关键字来标记 n
和 result
变量,这是因为我们需要在循环中修改它们的值。如果我们没有使用 mut
,我们将无法编译此代码。
当 n
的值减少到 0 时,while 循环条件将不再为真,循环将退出。然后我们打印 result
变量的值,这将是 5! 的结果。
以下示例演示了 while 循环的不同用例:
fn main() {
// Counting up from 0
let mut i = 0;
while i < 5 {
println!("i = {}", i);
i += 1;
}
// Counting down from 5
let mut j = 5;
while j > 0 {
println!("j = {}", j);
j -= 1;
}
// Iterating over a collection
let numbers = [1, 2, 3, 4, 5];
let mut index = 0;
while index < numbers.len() {
println!("numbers[{}] = {}", index, numbers[index]);
index += 1;
}
// Reading input until a specific value is entered
let mut input = String::new();
while input.trim() != "quit" {
println!("Please enter a word (or quit to exit):");
std::io::stdin().read_line(&mut input).unwrap();
println!("You entered: {}", input.trim());
}
}
在第一个示例中,我们使用 while 循环从 0 开始计数,直到计数器等于 5。在循环体中,我们打印 i
的值,然后增加 i
。当 i
的值等于 5 时,while 循环条件将不再为真,循环将退出。
在第二个示例中,我们使用 while 循环从 5 开始倒数,直到计数器等于 0。在循环体中,我们打印 j
的值,然后减少 j
。当 j
的值等于 0 时,while 循环条件将不再为真,循环将退出。
在第三个示例中,我们使用 while 循环来遍历一个包含 5 个元素的数组。我们初始化了一个 numbers
数组,然后初始化了一个 index
变量,它将用于迭代数组的每个元素。在循环体中,我们打印数组元素的值,然后增加 index
。当 index
的值等于数组长度时,while 循环条件将不再为真,循环将退出。
在最后一个示例中,我们使用 while 循环从标准输入读取用户输入,直到用户输入单词 "quit"。在循环体中,我们打印提示消息,然后使用 std::io::stdin()
方法读取输入并打印出来。然后我们使用 String::trim()
方法删除输入的前导和尾随空格,并检查输入是否等于 "quit"。如果输入不是 "quit",则循环将继续读取输入;如果输入是 "quit",则循环将退出。
while 循环是 Rust 中最基本和最灵活的控制流之一。它可以用于各种用例,例如计算、迭代和交互式输入。需要注意的是,在 while 循环中修改变量时,必须使用 mut
关键字来标记它们。另外,您应该小心使用 while 循环,以避免出现无限循环和其他问题。