天天看點

軟體開發 | Rust 基礎系列 #6: 條件語句

作者:硬核老王
軟體開發 | Rust 基礎系列 #6: 條件語句

在 上一篇文章中,你學習了函數。在這篇文章中,我們将學習使用條件語句來管理 Rust 程式的控制流。

什麼是條件語句?

在編寫代碼的時候,最常見的任務之一就是檢查某些條件是否為

true

false

。“如果溫度高于 35°C,打開空調。”

通過使用

if

else

這樣的關鍵字(有時候結合使用),程式員可以根據條件(例如提供的參數數量、從指令行傳遞的選項、檔案名、錯誤發生等)改變程式的行為。

是以,對一個程式員來說,了解任何語言的控制流都是至關重要的,更不用說 Rust 了。

條件運算符

下表列出了所有常用的單個條件運算符:

運算符 示例 解釋

>

a > b

a

大于

b

a

a

小于

b

==

a == b

a

等于

b

!=

a != b

a

不等于

b

>=

a >= b

a

大于或等于

b

a

a

小于或等于

b

以及下表是邏輯運算符,它們用于一個或多個條件之間:

運算符 示例 解釋

||

(邏輯或)

條件1 || 條件2

條件1

條件2

中至少有一個為

true

&&

(邏輯與)

條件1 && 條件2

所有條件都為

true

!

(邏輯非)

!條件

條件

的布爾值的相反值
📋 與數學相似,你可以使用圓括号來指定操作的優先級。

使用 if else

要控制 Rust 代碼的基本流程,使用兩個關鍵字:

if

else

。這可以根據提供的條件的狀态建立兩個“執行路徑”。

一個簡單的帶有替代執行路徑的 if 塊的文法如下:

if 條件 {
    ;
} else {
    ;
}
           
📋 當隻有一個條件時,将其括在圓括号中并不是強制性的。根據文法,使用圓括号是可選的。你仍然應該使用它們來指定優先級并優化可讀性。

來看看一個例子。

fn main {
    let a = 36;
    let b = 25;

    if a > b {
        println!("a 大于 b");
    } else {
        println!("b 大于 a");
    }
}
           

這裡,我聲明了兩個整數變量

a

b

,它們的值分别為 '36' 和 '25'。在第 5 行,我檢查變量

a

中存儲的值是否大于變量

b

中存儲的值。如果條件計算結果為

true

,則會執行第 6 行的代碼。如果條件計算結果為

false

,由于我們有一個

else

塊(可選),第 8 行的代碼将被執行。

來看看程式的輸出。

a 大于 b
           

完美!

來修改一下變量

a

的值,使其小于變量

b

的值,看看會發生什麼。我将把

a

的值改為 '10'。修改後的輸出如下:

b 大于 a
           

但是,如果我将相同的值存儲在變量

a

b

中呢?為了看到這一點,我将兩個變量的值都設定為 '40'。修改後的輸出如下:

b 大于 a
           

嗯?從邏輯上講,這沒有任何意義... :frowning:

但是這可以改進!我們繼續。

使用 else if 條件

與其他任何程式設計語言一樣,你可以使用

else if

塊來提供多于兩個的執行路徑。文法如下:

if 條件 {
    ;
} else if 條件 {
    ;
} else {
    ;
}
           

現在,通過使用

else if

塊,我可以改程序式的邏輯。下面是修改後的程式。

fn main {
    let a = 40;
    let b = 40;

    if a == b {
        println!("a 與 b 是相等的");
    } else if a > b {
        println!("a 大于 b");
    } else {
        println!("b 大于 a");
    }
}
           

現在,我的程式的邏輯是正确的。它已經處理了所有的邊緣情況(我能想到的)。第 5 行處理了

a

等于

b

的情況。第 7 行處理了

a

可能大于

b

的情況。而

a

小于

b

的情況則由第 9 行的

else

塊隐式處理。

現在,當我運作這段代碼時,我得到了以下輸出:

a 與 b 是相等的
           

現在這就完美了!

示例:找到最大值

我知道使用

if

else

很容易,但是讓我們再看一個程式。這次,我們來比較三個數字。我還将在這個執行個體中使用邏輯運算符!

fn main {
    let a = 73;
    let b = 56;
    let c = 15;

    if (a != b) && (a != c) && (b != c) {
        if (a > b) && (a > c) {
            println!("a 是最大的");
        } else if (b > a) && (b > c) {
            println!("b 是最大的");
        } else {
            println!("c 是最大的");
        }
    }
}
           

這個程式第一眼看上去可能很複雜,但是不要害怕,我會解釋的!

最開始,我聲明了三個變量

a

b

c

,并賦予了我能想到的随機值。然後,在第 6 行,我檢查了沒有變量的值與其他變量相同的條件。首先,我檢查

a

b

的值,然後是

a

c

,最後是

b

c

。這樣我就可以确定沒有變量中存儲了重複的值。

然後,在第 7 行,我檢查了變量

a

中存儲的值是否是最大的。如果這個條件計算結果為

true

,則會執行第 8 行的代碼。否則,将檢查第 9 行的執行路徑。

在第 9 行,我檢查了變量

b

中存儲的值是否是最大的。如果這個條件計算結果為

true

,則會執行第 10 行的代碼。如果這個條件也是

false

,那麼隻有一種可能。3 個變量中的最大值既不是

a

也不是

b

是以,自然地,在

else

塊中,我列印出變量

c

擁有最大值。

來看看程式的輸出:

a 是最大的
           

這是預期的結果。嘗試修改配置設定給每個變量的值,并自己測試一下! :smiley:

總結

你學習到了如何使用

if

else

語句。在你繼續使用大量

if

else if

語句制作自己的 AI 之前(哈哈),讓我們在本系列的下一篇文章中學習 Rust 中的循環。

持續關注。

(題圖:MJ/3eea3bbb-b630-4470-ae21-391ab86cd5bf)

via: https://itsfoss.com/rust-if-else/

作者:Pratham Patel選題:lkxed譯者:Cubik65536校對:wxy

本文由 LCTT原創編譯,Linux中國榮譽推出

繼續閱讀