Rust - 决策控制

  • 简述

    决策结构要求程序员指定一个或多个要由程序评估或测试的条件,以及在确定条件为真时要执行的一个或多个语句,以及可选地,如果条件为真则要执行的其他语句条件被确定为假。
    下面显示的是在大多数编程语言中发现的典型决策结构的一般形式 -
    做决定
    序号 语句 & 描述
    1
    if 语句
    if语句由一个布尔表达式后跟一个或多个语句。
    2
    if...else 语句
    if语句可以跟着一个可选的其他语句,当布尔表达式是假的,其执行。
    3
    else...if and 嵌套 if语句
    您可以在另一个ifelse if语句中使用一个ifelse if语句。
    4
    match 语句
    match语句允许一个变量来对值列表进行测试。
  • if语句

    IF ... ELSE结构求值被执行的代码块之前的状态。

    句法

    
    if boolean_expression {
       // 语句(s) will execute if the boolean expression is true
    }
    
    如果布尔表达式的计算结果为真,则将执行 if 语句中的代码块。如果布尔表达式的计算结果为 false,则将执行 if 语句结尾之后(右花括号之后)的第一组代码。
    
    fn main(){
       let num:i32 = 5;
       if num > 0 {
          println!("number is positive") ;
       }
    }
    
    上面的例子将打印 number is positive 因为 if 块指定的条件为真。
  • if else 语句

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

    句法

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

    流程图

    流程图
    if块保护条件表达式。如果布尔表达式的计算结果为真,则执行与 if 语句关联的块。
    if 块后面可以跟一个可选的 else 语句。如果表达式的计算结果为假,则执行与 else 块关联的指令块。

    插图 - 简单的 if...else

    
    fn main() {
       let num = 12;
       if num % 2==0 {
          println!("Even");
       } else {
          println!("Odd");
       }
    }
    
    上面的示例打印变量中的值是偶数还是奇数。if 块检查值被 2 的整除性以确定相同。这是上述代码的输出 -
    
    Even
    
  • 嵌套如果

    else…if梯子可用于测试多种条件。语法如下所示 -

    句法

    
    if boolean_expression1 {
       //语句s if the expression1 evaluates to true
    } else if boolean_expression2 {
       //语句s if the expression2 evaluates to true
    } else {
       //语句s 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 语句检查当前值是否与值列表匹配,这与 C 语言中的 switch 语句非常相似。首先,请注意 match 关键字后面的表达式不必括在括号中。
    语法如下所示。
    
    let expressionResult = match variable_expression {
       constant_expr1 => {
          //语句s;
       },
       constant_expr2 => {
          //语句s;
       },
       _ => {
          //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