iT邦幫忙

2025 iThome 鐵人賽

DAY 5
0

Rust 的控制流程包含條件判斷與各種迴圈,另外還有強大的 match 語法。Rust 特別強調「表達式」,因此在控制流程中也能直接把結果當值使用,這和 C/C++ 有些不同。今天先學習 if 與三種迴圈 (loop, while, for)的用法。

1. if 條件判斷
在 Rust 中,if 條件必須是布林值 (bool),不能像 C 那樣把整數當條件使用。

fn main() {
    let number = 5;

    if number < 10 {
        println!("number < 10");
    } else {
        println!("number >= 10");
    }
}

輸出:

number < 10

if 也是表達式,所以可以直接回傳值:

fn main() {
    let condition = true;
    let value = if condition { 1 } else { 0 };
    println!("value = {}", value);
}

輸出:

value = 1

2. loop 無窮迴圈
loop 會一直執行,除非遇到 break。

fn main() {
    let mut counter = 0;

    let result = loop {
        counter += 1;
        if counter == 3 {
            break counter * 2; // break 後可回傳值
        }
    };

    println!("result = {}", result);
}

輸出:

result = 6

3. while 條件迴圈
和其他語言相似,只要條件為 true 就會繼續跑。

fn main() {
    let mut number = 3;

    while number > 0 {
        println!("{}", number);
        number -= 1;
    }

    println!("Liftoff!");
}

輸出:

3
2
1
Liftoff!

4. for 迴圈
for 通常用來遍歷集合或範圍 (range)。

fn main() {
    for number in 1..4 {
        println!("{}", number);
    }
}

輸出:

1
2
3

還可以搭配 rev() 倒序:

fn main() {
    for number in (1..4).rev() {
        println!("{}", number);
    }
}

輸出:

3
2
1

5. 學習心得與補充
今天學到的控制流程我覺得最有趣的部份是關於loop可以直接用break傳回一個值,是我之前在其他語言中沒有看到過的,感覺Rust真的把一切皆表達式的理念發揮得很徹底。for迴圈的寫法也比C++的更加簡潔,C++的傳統for迴圈需要寫出初始化、條件、更新三個部分,看起來很直觀,但也比較冗長,Rust 則是直接用範圍或集合來表示,少打許多程式碼,配合 rev() 也能方便地做倒序。整體來說,我個人比較喜歡Rust的簡單明瞭。


上一篇
Day 4:函數與表達式
系列文
Rust 30 天養成計畫:從零到 CLI 專案5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言