官术网_书友最值得收藏!

3.2 循環

循環是在滿足指定條件的情況下,重復執行一段代碼。Rust中有3種循環。

1)loop:重復執行、永遠不會結束的循環。

2)while:在條件表達式的值為true時永遠執行的循環。

3)for:重復執行指定次數的循環。

3.2.1 loop循環

loop循環沒有循環條件,會無限次重復執行一段代碼,直到調用break語句退出循環。break語句是循環控制語句,用于退出循環并將返回值返回。

代碼清單3-1中,第2行代碼聲明了變量count并將其初始化為0,第3行代碼聲明的變量counter用來存放loop循環的返回值。第4~10行是loop循環執行的代碼,每一次循環會將count加1,并檢查count的值是否等于10。當count的值等于10時,使用break語句退出循環并返回count*2的值。此時,counter的值是20。

代碼清單3-1 loop循環

 1  fn main() {
 2      let mut count = 0;
 3      let counter = loop {
 4          count += 1;
 5          let counter = count * 2;
 6          println!("count: {}, counter: {}", count, counter);
 7  
 8          if count == 10 {
 9              break counter;
10          }
11      };
12  }
13
14  // count: 1, counter: 2
15  // count: 2, counter: 4
16  // ...
17  // count: 10, counter: 20

3.2.2 while循環

while循環會在每次執行代碼之前進行條件判斷,只要條件表達式的值為true就會重復執行代碼。while循環不需要loop循環中必須使用的if條件判斷和break語句,讓代碼結構更加簡潔。

代碼清單3-2中,使用while循環重構代碼清單3-1,實現了相似的功能,但省掉了使用if條件判斷和break語句的煩瑣。

代碼清單3-2 while循環

 1  fn main() {
 2      let mut count = 0;
 3      let mut counter = 0;
 4      while count != 10 {
 5          count += 1;
 6          counter = count * 2;
 7          println!("count: {}, counter: {}", count, counter);
 8      }
 9  }
10
11  // count: 1, counter: 2
12  // count: 2, counter: 4
13  // ...
14  // count: 10, counter: 20

3.2.3 for循環

for循環使用“for…in…”的語法格式,是一種重復執行指定次數的循環。因其安全性和簡潔性常用于對范圍類型或集合類型的所有元素執行指定的操作。

代碼清單3-3中,使用for循環實現了與代碼清單3-1和代碼清單3-2同樣的功能,可以看到for循環的代碼是最簡潔的。

代碼清單3-3 for循環

 1  fn main() {
 2      let mut counter = 0;
 3      for count in 1..=10 {
 4          counter = count * 2;
 5          println!("count: {}, counter: {}", count, counter);
 6      }
 7  }
 8
 9  // count: 1, counter: 2
10  // count: 2, counter: 4
11  // ...
12  // count: 10, counter: 20

3.2.4 continue和break語句

continue和break都是用于循環控制的語句。break語句直接退出循環,不再執行循環體內的任何代碼。而continue語句僅是跳出當前輪循環,不再執行循環體內continue語句之后的代碼,但它會再次進行條件判斷,決定是否重復執行循環。

代碼清單3-4中,第3行代碼在i等于0或者4時,會跳出當前輪循環,不再執行循環體內余下的代碼,因此不會打印0和4這兩個數字。第4行代碼在i等于6時會退出循環,因此不會打印6、7、8、9這4個數字。

代碼清單3-4 continue和break語句

 1  fn main() {
 2      for i in 0..10 {
 3          if i == 0 || i == 4 { continue; }
 4          if i == 6 { break; }
 5
 6          println!("i: {}", i);
 7      };
 8  }
 9
10  // i: 1
11  // i: 2
12  // i: 3
13  // i: 5
主站蜘蛛池模板: 怀远县| 霍州市| 竹山县| 兖州市| 乌鲁木齐市| 牙克石市| 兴国县| 松潘县| 同德县| 小金县| 五家渠市| 娄烦县| 大石桥市| 香河县| 白山市| 博客| 凤山市| 晋州市| 普洱| 札达县| 安溪县| 肥东县| 准格尔旗| 客服| 剑川县| 闽侯县| 视频| 新郑市| 永清县| 内乡县| 特克斯县| 湄潭县| 娱乐| 榆树市| 油尖旺区| 大化| 肥城市| 古蔺县| 九台市| 扶余县| 永州市|