Rust - 決策



決策結構要求程式設計師指定一個或多個條件,由程式進行評估或測試,以及在條件確定為真時要執行的語句或語句,以及可選地在條件確定為假時要執行的其他語句。

下面顯示的是大多數程式語言中常見決策結構的一般形式:

Decision-making
序號 語句及描述
1

if 語句

if 語句由一個布林表示式後跟一個或多個語句組成。

2

if...else 語句

if 語句後面可以跟一個可選的 else 語句,當布林表示式為假時執行。

3

else...if 和巢狀 if 語句

您可以在另一個 ifelse if 語句內使用一個 ifelse if 語句。

4

match 語句

match 語句允許將變數與值列表進行比較。

If 語句

if…else 結構在執行程式碼塊之前評估條件。

語法

if boolean_expression {
   // statement(s) will execute if the boolean expression is true
}

如果布林表示式計算結果為真,則將執行 if 語句內的程式碼塊。如果布林表示式計算結果為假,則將執行 if 語句結束後的第一組程式碼(在閉合花括號之後)。

fn main(){
   let num:i32 = 5;
   if num > 0 {
      println!("number is positive") ;
   }
}

上面的例子將列印number is positive,因為 if 塊指定的條件為真。

if else 語句

if 後面可以跟一個可選的 else 塊。如果 if 語句測試的布林表示式計算結果為假,則將執行 else 塊。

語法

if boolean_expression {
   // statement(s) will execute if the boolean expression is true
} else {
   // statement(s) will execute if the boolean expression is false
}

流程圖

FlowChart

if 塊保護條件表示式。如果布林表示式計算結果為真,則執行與 if 語句關聯的塊。

if 塊後面可以跟一個可選的 else 語句。如果表示式計算結果為假,則執行與 else 塊關聯的指令塊。

示例 - 簡單 if…else

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

上面的例子列印變數中的值是偶數還是奇數。if 塊檢查值是否能被 2 整除以確定這一點。以下是上述程式碼的輸出:

Even

巢狀 If

else…if 梯用於測試多個條件。語法如下所示:

語法

if boolean_expression1 {
   //statements if the expression1 evaluates to true
} else if boolean_expression2 {
   //statements if the expression2 evaluates to true
} else {
   //statements if both expression1 and expression2 result to false
}

使用 if…else…if 和 else 語句時,需要牢記以下幾點。

  • 一個 if 可以有零個或一個 else,並且它必須位於任何 else..if 之後。
  • 一個 if 可以有零到多個 else..if,並且它們必須位於 else 之前。
  • 一旦 else..if 成功,就不會再測試任何剩餘的 else..if 或 else。

示例:else…if 梯

fn main() {
   let num = 2 ;
   if num > 0 {
      println!("{} is positive",num);
   } else if num < 0 {
      println!("{} is negative",num);
   } else {
      println!("{} is neither positive nor negative",num) ;
   }
}

程式碼片段顯示值是正數、負數還是零。

輸出

2 is positive

Match 語句

match 語句檢查當前值是否與值列表中的某個值匹配,這與 C 語言中的 switch 語句非常相似。首先,請注意,match 關鍵字後面的表示式不必用括號括起來。

語法如下所示。

let expressionResult = match variable_expression {
   constant_expr1 => {
      //statements;
   },
   constant_expr2 => {
      //statements;
   },
   _ => {
      //default
   }
};

在下面給出的示例中,state_code 與值列表MH, KL, KA, GA進行匹配 - 如果找到任何匹配項,則將字串值返回給變數state。如果未找到匹配項,則預設情況 _ 匹配並返回值Unkown

fn main(){
   let state_code = "MH";
   let state = match state_code {
      "MH" => {println!("Found match for MH"); "Maharashtra"},
      "KL" => "Kerala",
      "KA" => "Karnadaka",
      "GA" => "Goa",
      _ => "Unknown"
   };
   println!("State name is {}",state);
}

輸出

Found match for MH
State name is Maharashtra
廣告