日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
Rust基礎系列#7:在Rust中使用循環(huán)

在 Rust 系列的 上一篇文章 中,我介紹了如何使用 if 和 else 關鍵字來處理 Rust 程序的控制流。

網站建設哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網頁設計、網站建設、微信開發(fā)、小程序制作、集團企業(yè)網站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了朗縣免費建站歡迎大家使用!

這是處理程序控制流的一種方法。另一種方法是使用循環(huán)。因此,讓我們在本文中看看循環(huán)。

Rust 中可用的循環(huán)

Rust 編程語言有三種不同的循環(huán),基于你想要實現(xiàn)什么以及可用的內容:

  • for
  • while
  • loop

我假設你對 for 和 while 已經很熟悉了,但 loop 對你來說可能是個新概念。讓我們先從熟悉的概念開始。

for 循環(huán)

for 循環(huán)主要用于迭代一種稱為迭代器的東西。

這個迭代器可以從任何東西中創(chuàng)建,從數(shù)組、向量(很快就會介紹!)、一系列值,或者任何自定義的東西。這里的可能性是無限的。

來看看 for 循環(huán)的語法。

for 迭代變量 in 迭代器 {
    <語句>;
}

其中的 迭代變量 在大多數(shù)其他編程語言教程中通常被稱為 i ; )

迭代器 可以是任何東西,只要它能告訴下一個值是什么,如果有的話。

來通過一個程序來理解這個。

fn main() {
    let my_arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    println!("迭代數(shù)組");
    for element in my_arr {
        println!("{}", element);
    }
    println!("\n迭代一個真正的迭代器");
    for element in my_arr.iter() {
        println!("{}", element);
    }
    println!("\nPython 風格的范圍");
    for element in 0..10 {
        println!("{}", element);
    }
}

這里,我聲明了一個數(shù)組,它包含從 0 到 9 的 10 個數(shù)字。在第 5 行的 for 循環(huán)中,我只是將這個數(shù)組指定為迭代器,Rust 會自動處理對這個數(shù)組的所有元素的迭代。不需要花哨的 my_arr[i] 魔法。

但是,在第 10 行,我調用了 .iter() 函數(shù)。這是一個明確的提及,它基于 my_arr 的值來獲取一個迭代器。這個循環(huán)和第 5 行的循環(huán)之間唯一的區(qū)別是,這里你是通過在數(shù)組上調用 .iter() 函數(shù)來明確地調用它的。

在這個上下文環(huán)境中,在一個數(shù)據(jù)類型上調用 .iter() 函數(shù)不是必須的。因為這是一個數(shù)組,是語言本身提供的一種數(shù)據(jù)類型,Rust 已經知道如何處理它了。但是你 需要 在自定義數(shù)據(jù)類型中使用它。

最后,在第 15 行,我們有一個循環(huán),它循環(huán)遍歷一個范圍。嗯,差不多是這樣。如果你仔細看,這個范圍看起來很像切片 “類型”。Rust 也知道這一點,并且  你處理了迭代(哈哈,明白了嗎?)。

LCTT 譯注:此處的梗是,“為你處理了迭代” 的英文原文是 “handles iteration for you",其中的 “for” 與 “for 循環(huán)” 的 “for” 是同一個單詞。

輸出如下:

迭代數(shù)組
0
1
2
3
4
5
6
7
8
9

迭代一個真正的迭代器
0
1
2
3
4
5
6
7
8
9

Python 風格的范圍
0
1
2
3
4
5
6
7
8
9

while 循環(huán)

while 循環(huán)可以被認為是非常類似于 if 條件語句。使用 if 語句,只要用戶提供的條件為 true,if 語句體中的代碼就會被執(zhí)行 一次

但是,在 while 循環(huán)中,如果條件評估為 true,循環(huán)就會開始循環(huán)循環(huán)體。只要條件繼續(xù)評估為 true,循環(huán)就會繼續(xù)迭代。

while 循環(huán)只有在循環(huán)完成當前迭代中所有語句的執(zhí)行并且在檢查條件時,它的結果為 false 時才會停止。

來看看 while 循環(huán)的語法...

while 條件 {
    <語句>;
}

看到了嗎?和 if 條件語句非常相似!不過沒有 else 塊 ; )

來看一個程序來更好地理解這個。

fn main() {
    let mut var = 0;
    while var < 3 {
        println!("{var}");
        var += 1;
    }
}

我有一個可變變量 var,它的初始值為 0。只要可變變量 var 中存儲的值小于 3,while 循環(huán)就會執(zhí)行。

在循環(huán)中,var 的值被打印出來,然后它的值被增加 1。

這是上面代碼的輸出:

0
1
2

loop 循環(huán)

Rust 有一個無限循環(huán)。是的,一個沒有開始條件和停止條件的循環(huán)。它只是一直循環(huán),直到永遠。當然,它有觸發(fā)器來停止代碼本身的循環(huán)執(zhí)行。

無限循環(huán)的語法如下:

loop {
    <語句>;
}

這些循環(huán)主要用于 GUI 軟件,退出是一個 顯式 操作。

在我給你一個例子之前,因為這個循環(huán)非常特殊,讓我們先看看如何 退出 它 :p

要停止無限循環(huán)的執(zhí)行,需要在循環(huán)內使用 break 關鍵字。

來看一個例子,只有 0 到 3 之間的整數(shù)(包括 0 和 3)才會被打印到程序輸出。

fn main() {
    let mut var = 0;
    loop {
        if var > 3 {
            break;
        }

        println!("{}", var);
        var += 1;
    }
}

看待這個特定的例子的最好方法是將它看作是一個增加了一堆沒有必要的東西的 while 循環(huán) ; )

你有一個可變變量 var,它的初始值為 0,它被用作迭代器。無限循環(huán)從一個 if 條件開始,如果 var 的值大于 3,break 關鍵字就會被執(zhí)行。后來,就像 while 循環(huán)的前一個例子一樣,var 的值被打印到標準輸出,然后它的值被增加 1。

它的輸出如下:

0
1
2
3

標記循環(huán)

假設有兩個無限循環(huán),一個嵌套在另一個中。由于某種原因,退出條件在最內層循環(huán)中被檢查,但這個退出條件是為了退出最外層循環(huán)。

在這種情況下,標記循環(huán)可能是有益的。

 break 和 continue 關鍵字并不僅僅用于無限循環(huán)。它們可以用于 Rust 語言提供的所有三種循環(huán)。

接下來是如何標記循環(huán)。

'標記: loop {}

要告訴編譯器一個循環(huán)被標記了,從一個單引號字符開始,輸入它的標簽,然后跟著一個冒號。然后,繼續(xù)使用你通常定義循環(huán)的方式。

當你需要退出某個循環(huán)時,只需像這樣指定循環(huán)標簽:

break '標記;

來看一個例子來更好地理解這個。

fn main() {
    let mut a = 0;
    let mut b = 0;

    'parent: loop {
        a += 1;
        loop {
            println!("a: {}, b: {}", a, b);
            b += 1;

            if a + b == 10 {
                println!("\n{} + {} = 10", a, b);
                break 'parent;
            }
        }
    }
}

這里,我使用兩個可變變量 a 和 b,它們的初始值都設置為 0。

然后,最外層的循環(huán)被標記為 parent。parent 循環(huán)將變量 a 的值增加 1,并有一個內部/子循環(huán)。

這個(在第 8 行的)子循環(huán)打印變量 a 和 b 的值。在這個循環(huán)內部,變量 b 的值增加了 1。退出條件是 a + b == 10。這意味著只要變量 a 和 b 中存儲的值相加,結果為 10,parent 循環(huán)就會被打破。即使第 14 行的 break 條件“屬于”內部循環(huán),它也會打破 parent 循環(huán)。

來看看程序的輸出。

a: 1, b: 0
a: 1, b: 1
a: 1, b: 2
a: 1, b: 3
a: 1, b: 4
a: 1, b: 5
a: 1, b: 6
a: 1, b: 7
a: 1, b: 8

1 + 9 = 10

就像從程序輸出中可以看出的那樣,循環(huán)在 a 和 b 分別具有值 1 和 9 時停止。

continue 關鍵字

如果你已經在其他編程語言(如 C/C++/Java/Python)中使用過循環(huán),你可能已經知道 continue 關鍵字的用法。

當 break 關鍵字用于完全停止循環(huán)執(zhí)行時,continue 關鍵字用于“跳過”循環(huán)執(zhí)行的 當前迭代 并從下一迭代開始(如果條件允許)。

來看一個例子來理解 continue 關鍵字的工作原理。

fn main() {
    for i in 0..10 {
        if i % 2 == 0 {
            continue;
        }
        println!("{}", i)
    }
}

在上面的代碼中,我有一個 for 循環(huán),它迭代了 0 到 9 之間的整數(shù)(包括 0 和 9)。一旦循環(huán)開始,我就設置了一個條件檢查,看看這個數(shù)字是不是偶數(shù)。如果這個數(shù)字是偶數(shù),continue 關鍵字就會被執(zhí)行。

但是如果這個數(shù)字是奇數(shù),這個數(shù)字就會被打印到程序輸出。

來看看這個程序的輸出。

1
3
5
7
9

正如你所看到的,循環(huán)似乎一直在“進行”,盡管 0 到 9 之間顯然有偶數(shù)。但是因為我使用了 continue 關鍵字,當遇到這個關鍵字時,循環(huán)執(zhí)行就會停止。

這個循環(huán)跳過了它下面的任何東西,并繼續(xù)下一次迭代。這就是為什么偶數(shù)沒有被打印出來,但是 0 到 9 之間的所有奇數(shù)都被打印到了程序輸出中。

總結

要總結這篇長文,我演示了 3 種不同循環(huán)的用法:forwhile 和 loop。我還討論了兩個關鍵字,它們影響這些循環(huán)的控制流:break 和 continue。

我希望你現(xiàn)在能理解每個循環(huán)的適當用例。如果你有任何問題,請告訴我。


本文標題:Rust基礎系列#7:在Rust中使用循環(huán)
瀏覽路徑:http://m.5511xx.com/article/ccsdhdp.html