while 循環(huán)

2018-08-12 22:03 更新

While 循環(huán)

Rust 中也有 while 循環(huán)。如下代碼所示:

let mut x = 5; // mut x: i32
let mut done = false; // mut done: bool

while !done {
x += x - 3;

println!("{}", x);

if x % 5 == 0 {
done = true;
}
}  

當你不能確定你需要循環(huán)多少次的時候 while 循環(huán)是一個不錯的選擇。

如果你需要一個無限循環(huán),你可能嘗試如下這樣寫:

while true {  

然而,Rust 有一個專用的關(guān)鍵字, loop ,來解決這個問題:

loop {

Rust 的控制流分析相對于 while true,在處理此構(gòu)建上有所不同,因為我們知道它將永遠循環(huán)。一般情況下,我們給編譯器的信息越多,編譯器越能夠更好的處理安全和代碼生成問題,所以在你打算實現(xiàn)無限循環(huán)時,你應該首選 loop

提早結(jié)束循環(huán)

讓我們看看早些時候我們有的 while 循環(huán):

let mut x = 5;
let mut done = false;

while !done {
x += x - 3;

println!("{}", x);

if x % 5 == 0 {
done = true;
}
}

我們不得不使用專用的 mut 布爾變量綁定, done,用來讓我們知道什么時候應該退出循環(huán)。Rust 有兩個關(guān)鍵字來幫助我們修改循環(huán): breakcontinue。

在這種情況下,我們可以通過使用 break ,來用一種更好的方式書寫循環(huán):

let mut x = 5;

loop {
x += x - 3;

println!("{}", x);

if x % 5 == 0 { break; }
}

現(xiàn)在我們使用 loop 來實現(xiàn)無限循環(huán),同時使用 break 來提早退出循環(huán)。

continue 是相似的,但是它不是結(jié)束循環(huán),而是轉(zhuǎn)到下一次循環(huán)。以下是只打印奇數(shù)的代碼:

for x in 0..10 {
if x % 2 == 0 { continue; }

println!("{}", x);
}

continuebreakwhile 循環(huán)和 for循環(huán)中都有效。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號