學習Rust 迴圈

大雄45發表於2020-12-04
導讀 Rust 語言是一種高效、可靠的通用高階語言。其高效不僅限於開發效率,它的執行效率也是令人稱讚的,是一種少有的兼顧開發效率和執行效率的語言。

學習Rust 迴圈學習Rust 迴圈
Rust 除了靈活的條件語句以外,迴圈結構的設計也十分成熟。這一點作為身經百戰的開發者應該能感覺出來。

while 迴圈

while 迴圈是最典型的條件語句迴圈:

例項

fn main() {
    let mut number = 1;
    while number != 4 {
        println!("{}", number);
        number += 1;
    }
    println!("EXIT");
}

執行結果:

1
2
3
EXIT

Rust 語言到此教程編撰之日還沒有 do-while 的用法,但是 do 被規定為保留字,也許以後的版本中會用到。

在 C 語言中 for 迴圈使用三元語句控制迴圈,但是 Rust 中沒有這種用法,需要用 while 迴圈來代替:

C 語言

int i;
for (i = 0; i < 10; i++) {
    // 迴圈體
}
Rust
let mut i = 0;
while i < 10 {
    // 迴圈體
    i += 1;
}
for 迴圈

for 迴圈是最常用的迴圈結構,常用來遍歷一個線性資料據結構(比如陣列)。for 迴圈遍歷陣列:

例項

fn main() {
    let a = [10, 20, 30, 40, 50];
    for i in a.iter() {
        println!("值為 : {}", i);
    }
}

執行結果:

值為 : 10
值為 : 20
值為 : 30
值為 : 40
值為 : 50

這個程式中的 for 迴圈完成了對陣列 a 的遍歷。a.iter() 代表 a 的迭代器(iterator),在學習有關於物件的章節以前不做贅述。

當然,for 迴圈其實是可以透過下標來訪問陣列的:

例項

fn main() {
let a = [10, 20, 30, 40, 50];
    for i in 0..5 {
        println!("a[{}] = {}", i, a[i]);
    }
}

執行結果:

a[0] = 10
a[1] = 20
a[2] = 30
a[3] = 40
a[4] = 50
loop 迴圈

身經百戰的開發者一定遇到過幾次這樣的情況:某個迴圈無法在開頭和結尾判斷是否繼續進行迴圈,必須在迴圈體中間某處控制迴圈的進行。如果遇到這種情況,我們經常會在一個 while (true) 迴圈體裡實現中途退出迴圈的操作。

Rust 語言有原生的無限迴圈結構 —— loop:

例項

fn main() {
    let s = ['R', 'U', 'N', 'O', 'O', 'B'];
    let mut i = 0;
    loop {
        let ch = s[i];
        if ch == 'O' {
            break;
        }
        println!("\'{}\'", ch);
        i += 1;
    }
}

執行結果:

'R' 
'U' 
'N'

loop 迴圈可以透過 break 關鍵字類似於 return 一樣使整個迴圈退出並給予外部一個返回值。這是一個十分巧妙的設計,因為 loop 這樣的迴圈常被用來當作查詢工具使用,如果找到了某個東西當然要將這個結果交出去:

例項

fn main() {
    let s = ['R', 'U', 'N', 'O', 'O', 'B'];
    let mut i = 0;
    let location = loop {
        let ch = s[i];
        if ch == 'O' {
            break i;
        }
        i += 1;
    };
    println!(" \'O\' 的索引為 {}", location);
}

執行結果:

 'O' 的索引為 3

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2739580/,如需轉載,請註明出處,否則將追究法律責任。

相關文章