Rust-decision-making

提供:Dev Guides
移動先:案内検索

錆-意思決定

意思決定構造では、プログラマーが、プログラムによって評価またはテストされる1つ以上の条件を、条件が真であると判断された場合に実行されるステートメント、およびオプションで、条件は偽と判断されます。

以下に示すのは、ほとんどのプログラミング言語で見られる典型的な意思決定構造の一般的な形式です-

意思決定

Sr.No Statement & Description
1

if statement

_if_ステートメントは、ブール式とそれに続く1つ以上のステートメントで構成されます。

2

if…​else statement

_if_ステートメントの後にオプションの_else_ステートメントを続けることができます。これは、ブール式がfalseの場合に実行されます。

3

else…​if and nested ifstatement

1つの_if_または_else if_ステートメントを別の_if_または_else if_ステートメント内で使用できます。

4

match statement

_match_ステートメントを使用すると、変数を値のリストに対してテストできます。

Ifステートメント

_if…else_コンストラクトは、コードブロックが実行される前に条件を評価します。

構文

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

ブール式の評価がtrueの場合、ifステートメント内のコードブロックが実行されます。 ブール式の評価がfalseの場合、ifステートメントの終了後(閉じ中括弧の後)の最初のコードセットが実行されます。

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

上記の例は、ifブロックがtrueで指定された条件として number is positive を出力します。

if elseステートメント

*if* の後にオプションの *else* ブロックを続けることができます。 elseステートメントは、ifステートメントによってテストされたブール式がfalseと評価された場合に実行されます。

構文

if boolean_expression {
  //statement(s) will execute if the boolean expression is true
} else {
  //statement(s) will execute if the boolean expression is 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

ネストされた場合

*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には0個または1個のelseを含めることができ、else..ifの後に来る必要があります。
  • ifは、0個以上の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 => {
     //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