1010## for
1111
1212for 语句用于遍历一个迭代器。
13- ```
13+ ``` rust
1414for var in iterator {
1515 code
1616}
1717```
1818Rust 迭代器返回一系列的元素,每个元素是循环中的一次重复。然后它的值与 var 绑定,它在循环体中有效。每当循环体执行完后,我们从迭代器中取出下一个值,然后我们再重复一遍。当迭代器中不再有值时,for 循环结束。
1919
2020比如:
21- ```
21+ ``` rust
2222for x in 0 .. 10 {
2323 println! (" {}" , x ); // x: i32
2424}
@@ -39,7 +39,7 @@ for x in 0..10 {
3939
4040不熟悉迭代器概念的同学可能傻眼了,下面不仿用 C 形式的 for 语句做下对比:
4141
42- ```
42+ ``` rust
4343// C 语言的 for 循环例子
4444for (x = 0 ; x < 10 ; x ++ ) {
4545 printf ( " %d\ n" , x );
@@ -57,7 +57,7 @@ for 语句就是迭代器遍历的语法糖。
5757
5858上述迭代器的形式虽好,但是好像在循环过程中,少了索引信息。Rust 考虑到了这一点,当你需要记录你已经循环了多少次了的时候,你可以使用 ` .enumerate() ` 函数。比如:
5959
60- ```
60+ ``` rust
6161for (i ,j ) in (5 .. 10 ). enumerate () {
6262 println! (" i = {} and j = {}" , i , j );
6363}
@@ -73,7 +73,7 @@ i = 4 and j = 9
7373```
7474再比如:
7575
76- ```
76+ ``` rust
7777let lines = " Content of line one\ n Content of line two\ n Content of line three\ n Content of line four" . lines ();
7878for (linenumber , line ) in lines . enumerate () {
7979 println! (" {}: {}" , linenumber , line );
@@ -93,15 +93,15 @@ for (linenumber, line) in lines.enumerate() {
9393
9494Rust 提供了 while 语句,条件表达式为真时,执行语句体。当你不确定应该循环多少次时可选择 while。
9595
96- ```
96+ ``` rust
9797while expression {
9898 code
9999}
100100```
101101
102102比如:
103103
104- ```
104+ ``` rust
105105let mut x = 5 ; // mut x: i32
106106let mut done = false ; // mut done: bool
107107
@@ -120,15 +120,15 @@ while !done {
120120
121121有一种情况,我们经常会遇到,就是写一个无限循环:
122122
123- ```
123+ ``` rust
124124while true {
125125 // do something
126126}
127127```
128128
129129针对这种情况,Rust 专门优化提供了一个语句 loop。
130130
131- ```
131+ ``` rust
132132loop {
133133 // do something
134134}
@@ -138,7 +138,7 @@ loop {
138138
139139比如说,如下代码:
140140
141- ```
141+ ``` rust
142142let mut a ;
143143loop {
144144 a = 1 ;
@@ -158,7 +158,7 @@ do_something(a)
158158
159159像上面那个 while 例子:
160160
161- ```
161+ ``` rust
162162let mut x = 5 ;
163163let mut done = false ;
164164
@@ -174,7 +174,7 @@ while !done {
174174```
175175可以优化成:
176176
177- ```
177+ ``` rust
178178let mut x = 5 ;
179179
180180loop {
@@ -189,7 +189,7 @@ loop {
189189
190190下面这个例子演示 continue 的用法:
191191
192- ```
192+ ``` rust
193193for x in 0 .. 10 {
194194 if x % 2 == 0 { continue ; }
195195
@@ -212,7 +212,7 @@ for x in 0..10 {
212212
213213如下代码只会在 x 和 y 都为奇数时打印他们:
214214
215- ```
215+ ``` rust
216216'outer : for x in 0 .. 10 {
217217 'inner : for y in 0 .. 10 {
218218 if x % 2 == 0 { continue 'outer ; } // continues the loop over x
@@ -221,4 +221,3 @@ for x in 0..10 {
221221 }
222222}
223223```
224-
0 commit comments