在 上一篇文章中,你學習了函數。在這篇文章中,我們将學習使用條件語句來管理 Rust 程式的控制流。
什麼是條件語句?
在編寫代碼的時候,最常見的任務之一就是檢查某些條件是否為
true
或
false
。“如果溫度高于 35°C,打開空調。”
通過使用
if
和
else
這樣的關鍵字(有時候結合使用),程式員可以根據條件(例如提供的參數數量、從指令行傳遞的選項、檔案名、錯誤發生等)改變程式的行為。
是以,對一個程式員來說,了解任何語言的控制流都是至關重要的,更不用說 Rust 了。
條件運算符
下表列出了所有常用的單個條件運算符:
運算符 | 示例 | 解釋 |
---|---|---|
| | 大于 |
| 小于 | |
| | 等于 |
| | 不等于 |
| | 大于或等于 |
| 小于或等于 |
以及下表是邏輯運算符,它們用于一個或多個條件之間:
運算符 | 示例 | 解釋 |
---|---|---|
(邏輯或) | | 或 中至少有一個為 |
(邏輯與) | | 所有條件都為 |
(邏輯非) | | 的布爾值的相反值 |
📋 與數學相似,你可以使用圓括号來指定操作的優先級。
使用 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中國榮譽推出