【图书介绍】《Rust编程与项目实战》-CSDN博客
《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com)
Rust编程与项目实战_夏天又到了的博客-CSDN博客
6.2 for 循 环
迭代次数是确定/固定的循环称为确定循环。for 循环是一个确定循环。for 循环执行代码块指定的次数。它可用于迭代一组固定的值,例如数组。for 循环的语法如下:
for temp_variable in lower_bound..upper_bound {//代码语句
}
temp_variable是一个临时变量,取值范围是[lower_bound,upper_bound-1],也就是让temp_variable不断改变取值(从lower_bound开始,每次加1),不断执行代码语句。
第一次temp_variable取值是lower_bound,然后执行代码语句;第二次temp_variable取值是lower_bound+1,然后执行代码语句;第三次temp_variable取值是lower_bound+2,然后执行代码语句,以此类推,一直到temp_variable取值upper_bound−1,此时将最后一次执行代码语句,则整个for循环结束。
注意:循环次数从lower_bound到upper_bound−1,不包括upper_bound。另外,花括号不能省略,即使只有一条代码语句。
下面举一个for循环的例子:
fn main(){for x in 0..10{print!("{},", x);}
}
输出结果如下:
0,1,2,3,4,5,6,7,8,9,
可见,x的取值范围为0~9,不包括10,0~9已经是10次了,所以执行了10次打印语句。
6.3 while 循 环
当循环中的迭代次数不确定或未知时,通常使用while循环。while循环的语法格式如下:
while 表达式
{循环体内的语句
}
这种循环语句中的表达式是循环语句能否继续运行的条件,其功能是保证语句循环运行。只要表达式为true,就可以执行循环体内的语句,否则终止循环,执行循环体外的语句。比如:
fn main(){let mut x = 0;while x < 5{x+=1;println!("inside loop x value is {}",x);}println!("outside loop x value is {}",x);}
值得注意的是,即使循环体内的语句只有一句,花括号依旧不能少。
Rust语言到写本书时还没有do-while的用法,但是do被规定为保留字,也许以后的版本中会 用到。
6.4 loop 循 环
loop告诉Rust永远重复执行一段代码,直到明确地告诉需要停止为止,否则将一直重复执行(直到你的机器没电为止),相当于一个while无限循环。示例代码如下:
fn main() {loop {println!("loop!");}
}
执行该代码,不出意外的话将不会停止打印loop:
loop
loop
loop
loop
loop
loop
loop
...
如果程序在VS Code中运行,则单击右上角的红色矩形按钮才会停止程序。如果该程序在命令行窗口执行,则需要按快捷键Ctrl+C才会停止程序。这里的loop循环也可以改写为:
while true{println!("loop!");
}
6.5 break 语 句
通过使用break语句,即使在没有满足结束条件的情况下,也可以跳出一个循环。break可以被用来结束一个无限循环(Infinite Loop),或强迫循环在其自然结束之前结束。例如,我们想要在倒计数自然结束之前强迫它停止。break语句可以用在for、while和loop循环体中。
break既可以单独使用,也可以带参数,这个参数将作为循环体的返回值。
单独使用时,break的作用就是跳出循环,比如:
fn main(){let mut x = 0;loop {x+=1;println!("x={}",x);if x==5 {break;}}
}
当满足x等于5的时候,就执行break语句,然后跳出loop循环,循环结束。输出结果如下:
x=1
x=2
x=3
x=4
x=5
这个程序终止无限循环,当然也可以终止非无限循环,比如:
fn main() {let mut x = 0;while x < 30 {x += 1;println!("{}", x);if x>5 {break;}}println!("循环结束了");
}
本来要执行30次循环,但一旦x大于5,就要执行break语句,从而提前跳出循环。输出结果 如下:
1
2
3
4
5
6
循环结束了