Rust 循環(huán)

Rust 除了靈活的條件語(yǔ)句以外,循環(huán)結(jié)構(gòu)的設(shè)計(jì)也十分成熟。這一點(diǎn)作為身經(jīng)百戰(zhàn)的開(kāi)發(fā)者應(yīng)該能感覺(jué)出來(lái)。

while 循環(huán)

while 循環(huán)是最典型的條件語(yǔ)句循環(huán):

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

運(yùn)行結(jié)果:

1
2
3
EXIT

Rust 語(yǔ)言到此教程編撰之日還沒(méi)有 do-while 的用法,但是 do 被指定為保留字,也許以后的版本中會(huì)用到。

在 C 語(yǔ)言中 for 循環(huán)使用三元語(yǔ)句控制循環(huán),但是 Rust 中沒(méi)有這種用法,需要用 while 循環(huán)來(lái)代替:

C 語(yǔ)言

int i; 
for (i = 0; i < 10; i++) { 
    // 循環(huán)體
}

Rust

let mut i = 0; 
while i < 10 { 
    // 循環(huán)體 
    i += 1; 
}

for 循環(huán)

for 循環(huán)是最常用的循環(huán)結(jié)構(gòu),常用來(lái)遍歷一個(gè)線性數(shù)據(jù)據(jù)結(jié)構(gòu)(比如數(shù)組)。for 循環(huán)遍歷數(shù)組:

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

運(yùn)行結(jié)果:

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

這個(gè)程序中的 for 循環(huán)完成了對(duì)數(shù)組 a 的遍歷。a.iter() 代表 a 的迭代器(iterator),在學(xué)習(xí)有關(guān)于對(duì)象的章節(jié)以前不做贅述。

當(dāng)然,for 循環(huán)其實(shí)是可以通過(guò)下標(biāo)來(lái)訪問(wèn)數(shù)組的:

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

運(yùn)行結(jié)果:

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

loop 循環(huán)

身經(jīng)百戰(zhàn)的開(kāi)發(fā)者一定遇到過(guò)幾次這樣的情況:某個(gè)循環(huán)無(wú)法在開(kāi)頭和結(jié)尾判斷是否繼續(xù)進(jìn)行循環(huán),必須在循環(huán)體中間某處控制循環(huán)的進(jìn)行。如果遇到這種情況,我們經(jīng)常會(huì)在一個(gè) while (true) 循環(huán)體里實(shí)現(xiàn)中途退出循環(huán)的操作。

Rust 語(yǔ)言有原生的無(wú)限循環(huán)結(jié)構(gòu) —— 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; 
    } 
}

運(yùn)行結(jié)果:

'R' 
'U' 
'N'

loop 循環(huán)可以通過(guò) break 關(guān)鍵字類(lèi)似于 return 一樣使整個(gè)循環(huán)退出并給予外部一個(gè)返回值。這是一個(gè)十分巧妙的設(shè)計(jì),因?yàn)?loop 這樣的循環(huán)常被用來(lái)當(dāng)作查找工具使用,如果找到了某個(gè)東西當(dāng)然要將這個(gè)結(jié)果交出去:

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); 
}

運(yùn)行結(jié)果:

 'O' 的索引為 3
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清