Rust - 决策语句

决策结构要求程序员指定一个或多个要由程序评估或测试的条件,以及在确定条件为 true 时要执行的一条或多条语句,以及可选的其他要执行的语句。 如果确定条件为 false,则执行。

下面显示的是大多数编程语言中典型决策结构的一般形式 −

决策
Sr.No 语句 & 描述
1

if 语句

if 语句由一个布尔表达式后跟一个或多个语句组成。

2

if...else 语句

if 语句后面可以跟一个可选的 else 语句,该语句在布尔表达式为 false 时执行。

3

else...if 和嵌套 if 语句

您可以在另一个 ifelse if 语句中使用一个 ifelse if 语句 。

4

match 语句

match 语句允许根据值列表测试变量。

If 语句

if…else 构造在执行代码块之前评估条件。

语法

if boolean_expression {
   // 如果布尔表达式为 true,则语句将执行
}

如果布尔表达式的计算结果为 true,则 if 语句内的代码块将被执行。 如果布尔表达式的计算结果为 false,则将执行 if 语句末尾(右大括号之后)后的第一组代码。

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

上面的示例将打印 number is Positive,因为 if 块指定的条件为 true。

if else 语句

if 后面可以跟一个可选的 else 块。 如果 if 语句测试的布尔表达式的计算结果为 false,则 else 块将执行。

语法

if boolean_expression {
   // 如果布尔表达式为 true,则语句将执行
} else {
   // 如果布尔表达式为 false,则语句将执行
}

流程图

流程图

if 块条件表达式。 如果布尔表达式的计算结果为 true,则执行与 if 语句关联的块。

if 块后面可以跟一个可选的 else 语句。 如果表达式的计算结果为 false,则执行与 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 {
   //如果表达式 1 的计算结果为 true 的语句
} else if boolean_expression2 {
   //如果表达式2 的计算结果为 true 的语句
} else {
   //如果表达式 1 和表达式 2 的结果都为 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