跳轉到內容

Rust 初學者指南/If 語句和布林值

100% developed
來自華夏公益教科書,開放的書籍,開放的世界

If 語句和布林值

[編輯 | 編輯原始碼]

一個基本的概念是,我們可能希望根據某些條件執行不同的操作。例如,我們可能希望將數字限制在某個閾值,比如 10。因此,如果數字大於 10,我們希望將其設定為 10。為了表達這一點,我們使用稱為 if 語句的東西。if 語句使用稱為布林值的東西。布林值要麼為真,要麼為假。在 Rust 中,它簡化為“bool”以方便輸入。例如

 fn main() {
     let number = 5;
     let is_six: bool = number == 6;
 }

這裡我們使用 == 來檢查左右兩邊的兩個東西是否相等。如果相等,則變為真,否則變為假。由於 5 不等於 6,所以 is_six 將為假。除了 == 之外,還有其他被稱為“運算子”的東西,因為它們對輸入進行運算。最常見的運算子是 ==,用於比較兩個東西是否相同;!=,用於比較兩個東西是否不同;>,用於比較左側的東西是否大於右側的東西;>=,用於比較左側的東西是否大於或等於右側的東西;以及 < 和 <= 的反向比較。

我們在 if 語句中使用這些運算子,將一個布林值放入 if 語句中,如果布林值為真,我們將進入 if 語句的 {} 中,否則不進入。

 fn main() {
     let mut number = 5;
     let is_six: bool = number == 6;
     if is_six {
         number += 4;
     }
     println!("{}", number);
 }

因此,由於 is_six 為假,我們不會進入 if 大括號,打印出的數字將是 5。但是,如果我們將其更改為

 fn main() {
     let mut number = 5;
     let is_five: bool = number == 5;
     if is_five {
         number += 4;
     }
     println!("{}", number);
 }

由於數字等於 5,所以 is_five 為真,我們進入大括號,導致數字最終等於 9。這比較冗長,因此通常情況下布林值不會放在變數中,而是直接放在 if 語句中,如下所示

 fn main() {
     let mut number = 5;
     if number == 5 {
         number += 4;
     }
     println!("{}", number);
 }

這寫起來更快,更簡潔,更容易在以後修改,因此通常更受青睞。

假設我們想在數字等於 6 時加 4,在數字不等於 6 時減 4。我們該怎麼做呢?我們可以使用 != 不等於運算子進行第二個 if 語句,如下所示

 fn main() {
     let mut number = 5;
     if number == 6 {
         number += 4;
     }
     if number != 6 {
         number -= 4;
     }
     println!("{}", number);
 }

這將起作用,但它很長且讀起來很彆扭,也不便於更改。相反,我們使用 else 運算子

 fn main() {
     let mut number = 5;
     if number == 6 {
         number += 4;
     } else {
         number -= 4;
     }
     println!("{}", number);
 }

這裡,由於數字不等於 6,我們進入 else 中,減去 4,所以數字等於 1。

我們還可以將 if 和 else 組合起來執行不同的操作:例如,假設我們想在數字小於 7 時加 4,在數字大於 9 時減 4,否則加 1。如果用單獨的 if 語句來做,這將很尷尬,因為如果數字是 6,它小於 7,所以我們會加 4,使其成為 10,這意味著我們隨後將減去 4,因為它大於 9。因此,使用 else 語句將每個部分劃分為自己的程式碼塊很方便。我們可以用以下方式實現這種行為

 fn main() {
     let mut number = 5;
     if number < 7 {
         number += 4;
     } else if number > 9 {
         number -= 4;
     } else {
         number += 1;
     }
     println!("{}", number);
 }

數字最終為 **9**。

讓我們回到一開始將數字限制在 10 的示例。現在我們可以做到這一點,並且可以將其表示為一個函式。

 fn cap_at_10(input: i32) -> i32 {
     if input > 10 {
          return 10;
     } else {
          return input;
     }
 }

然後我們可以在 main() 中使用它,如下所示

 fn main() {
     let mut number = 8;
     number = cap_at_10(number);
     let mut number2 = 14;
     number2 = cap_at_10(number2);
     println!("{}", number);
     println!("{}", number2);
 }

這將打印出 8 和 10,因為 8 小於 10,所以我們進入 if 語句的 else {} 部分,所以只從函式返回 8。而對於 14,它大於 10,所以我們進入 if 語句的 if {} 部分,所以返回 10。

所有這些程式設計事物的一個關鍵點是它們非常簡單。它們的強大之處在於將它們組合起來使用。從小事做起,大事成!

下一節:迴圈和迭代

華夏公益教科書