循环,第二部分:for
手动递增计数器变量略显繁琐,而且这种模式极为普遍!为了简化这一过程,Rust提供了一种更简洁的方式来遍历一系列值:for
循环。
for循环
for循环是一种针对迭代器1中每个元素执行代码块的方式1。
基本语法如下:
#![allow(unused)] fn main() { for <element> in <iterator> { // code to execute } }
区间
Rust的标准库提供了区间类型,可用于遍历一系列数字2。
例如,如果我们想计算1到5的数字之和:
#![allow(unused)] fn main() { let mut sum = 0; for i in 1..=5 { sum += i; } }
每次循环运行时,i
都会被赋予区间的下一个值,然后执行代码块。
Rust中有五种类型的区间:
1..5
:半开区间。包含从1到4的所有数字。不包括最后一个值,即5。1..=5
:包含结束值的区间。包含从1到5的所有数字,包括最后一个值,即5。1..
:开放式区间。从1开始,理论上到整数最大值的所有数字(实际上是直到整数类型的上限)。..5
:从整数类型的最小值开始,到4的所有数字。不包括最后一个值,即5。..=5
:从整数类型的最小值开始,到5的所有数字。包括最后一个值,即5。
你可以使用for
循环配合前三种区间,其中起始点是明确指定的。最后两种区间类型则用于其他情境,我们将在后续学习中覆盖。
区间的极端值不必是整数字面量——它们也可以是变量或表达式!
例如:
#![allow(unused)] fn main() { let end = 5; let mut sum = 0; for i in 1..(end + 1) { sum += i; } }
参考资料
本节练习位于 exercises/02_basic_calculator/07_for
进一步阅读
1
在课程后期,我们将给出“迭代器”的精确定义。目前,可以将其理解为一个你可以遍历的值序列。
2
区间也可以与其他类型一起使用(比如字符和IP地址),但在日常的Rust编程中,整数无疑是最常见的应用场景。