7、for循环

for循环

while,loop循环等,他们的条件表达式的模式匹配比较单一,Rust提供的的for循环,有更强大的模式匹配功能,它可以使用更简单的方式去遍历一个数字序列

for循环也可以轻松的遍历迭代器,一般的语法结构如下:

for <element> in <iterator>{

}

ranges

范围

Rust的标准库提供了一种范围类型,可以用来遍历一个数字序列

比如可以这样遍历1->5

let mut sum=0;
for i in 1..=5{
	sum+=i;
}

任何时候执行代码,在控制流到达循环体之前,i都会被赋给一个范围中的下一个值

这里有五种范围的表示方式

  • 1..5 : 半开放范围,它包含1到4的所有数字,不包含最后一个数字5,相当于i<5
  • 1..=5 : 包含范围,包含从1到5的所有数字,它包含最后一个值,相当于i<=5
  • 1.. : 开放末尾范围,只有起始值,没有终止值,终止值就是integer的最大值
  • ..5 : 从整数类型的最小值开始到4结束的范围。不包含最后一个值5。
  • ..=5 : 从整数类型的最小值开始到5结束的范围。包含最后一个值5。

前三个还比较常用,后两个好像后面有的地方会用到

范围的极值,也并不一定要是一个数,也可以让变量或表达式作为范围的极值

let end = 5;
let mut sum = 0;

for i in 1..(end + 1) {
    sum += i;
}

练习

还是用for循环完成那个阶乘的例子

还挺简单的吧

pub fn factorial(n: u32) -> u32 {
    let mut res=1;
    for i in 1..=n{
        res*=i;
    }
    res
}

for循环就先到这里了,上一节也学了很多关于for循环的内容

阅读剩余
THE END