不知不覺中我們也一起學到了第 10 天,已經達成三分之一了。(ง๑ •̀_•́)ง

今天來介紹的是 Rust 的條件判斷,相信有學過其他程式語言的人應該都知道,條件判斷是用來判斷程式執行的流程,而在 Rust 中,條件判斷的語法跟其他語言也差不多,但還是有一些地方需要了解一下。

if…else

在 Rust 中寫 if…else 非常簡單,不需要在條件加上 (),因為在 if{ 中的範圍都是代表條件,這也就表示在這範圍內寫的條件必須是 truefalse,而且在大多數情況下並不需要加入型別。

以下是一個簡單的範例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
fn main() {
let result = print_result(20, 10);
println!("{}", result);
// ?
}

fn print_result(x: i32, y: i32) -> char {
let msg;
if x > y {
msg = '?';
} else {
msg = '?';
};
return msg;
}

在上面的範例中,我們定義了一個 print_result() 函式,並且在裡面定義了一個 msg 變數,接著在 if…else 中判斷 xy 的大小,如果 x 大於 y,則將 msg 設定為 ?,否則就設定為 ?

然後建立一個變數 result 來接收 print_result() 函式的回傳值,最後將 result 的值印出來。

print_result() 的參數 xy 分別帶入 2010,所以 x 大於 y,所以 msg 的值會是 ?,最後印出來的結果就是 ?

else if 多個條件判斷

有時候我們可能會需要多個條件判斷,這時候就可以使用 else if 來判斷,以下是一個範例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
fn main() {
let result = print_result(20, 20);
println!("{}", result);
// =
}

fn print_result(x: i32, y: i32) -> char {
let msg;
if x > y {
msg = '?';
} else if x < y {
msg = '?';
} else {
msg = '=';
};
return msg;
}

在這個範例中,我們多加了一個條件判斷,如果 x 小於 y,則將 msg 設定為 ?,否則就設定為 =
由於 xy 的值都是 20,所以 x 等於 y,所以 msg 的值會是 =,最後印出來的結果就是 =

特殊寫法

前面都有提到說在 Rust 中,每次一段結尾都要加上 ;,但在 if…else 中,如果只有一行程式碼,則可以省略 ;,以下是一個範例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
fn main() {
let result = print_result(20, 10);
println!("{}", result);
// ?
}

fn print_result(x: i32, y: i32) -> char {
let msg;
if x > y {
msg = '?'
} else {
msg = '?'
};
return msg;
}

甚至我們可以直接寫表達式,來將變數直接指向 if…else 的回傳值,就像這樣:

1
2
3
4
5
6
7
8
9
10
fn main() {
let result = print_result(20, 10);
println!("{}", result);
// ?
}

fn print_result(x: i32, y: i32) -> char {
let msg = if x > y { '?' } else { '?' };
return msg;
}

以上就是 Rust 中 if…else 的基本用法,是不是很簡單呢?