Rust(2) - if, loop, for and while

Rust 類似 Scala 讓程式在流程分支時能夠回傳數值,這應該是一種現代語言的特徵。

1. if:

if 判斷式最簡單的用法

fn main() {
    let num = 10;
    if num%2 == 0 {
        println!("Even");
    } else {
        println!("Odd");
    }
}

Rust 中 if 不但是判斷式,同時還是會回傳結果的表達式。

下面程式碼類似 C 的 :?。

fn main() {
    let his_emotion = "happy";

    let her_emotion = if his_emotion == "happy" {
        "very happy"
    } else {
        "very unhappy"
    };

    println!("her_emotion: {}", her_emotion)
}

注意字串後面沒有加 ";",代表該值會被回傳。而 if 後面多了 ";" 代表表達式的結束。


2. loop:

Rust 中 loop 也是表達式,我們可以讓 loop 在 break 後回傳數值。

被回傳的數值依樣沒有 ";", 我們把 ";"寫在 loop 結束的地方。

fn main() {
   let mut counter = 0;
   
   let result = loop {
        counter +=1 ;
        if counter > 10 {
            break "task done"
        }
   };

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

3. while:

若上面的 loop 只是要計算次數不需要回傳值時可以用 while 代替。

fn main() {
   let mut counter = 0;

    while counter <= 10 {
        counter +=1;
    }
}

4. for:

Rust 提供類似 Python 的 for loop,讓你可以輕松地循環數次。

下面語法類似 Python,i 包含 1 小於 10。

fn main() {
   for i in 1..10 {
       println!("{}", i);
   }
}

簡單地反 iterate。

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

To iterate through an iterable。

fn main() {
   let arr = [1, 2, 3, 4, 5];
   for it in arr.iter() {
       println!("{}", it);
   }
}

留言

熱門文章