Ржавчина - принятие решений

Структуры принятия решений требуют, чтобы программист указал одно или несколько условий, которые должны быть оценены или протестированы программой, вместе с оператором или операторами, которые должны быть выполнены, если условие определено как истинное, и, необязательно, другие операторы, которые должны быть выполнены, если условие определено как ложное.

Ниже показана общая форма типичной структуры принятия решений, встречающейся в большинстве языков программирования.

Старший Нет Заявление и описание
1

if statement

Если заявление состоит из логического выражения следует один или более операторов.

2

if...else statement

За оператором if может следовать необязательный оператор else , который выполняется, когда логическое выражение ложно.

3

else...if and nested ifstatement

Вы можете использовать один оператор if или else if внутри другого оператора if или else if .

4

match statement

Матч заявление позволяет переменной испытываться со списком значений.

Если заявление

Конструкция if… else оценивает условие перед выполнением блока кода.

Синтаксис

if boolean_expression {
   // statement(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, истинно.

если еще заявление

An if может сопровождаться необязательным elseблок. Блок else будет выполняться, если логическое выражение, проверенное оператором if, оценивается как ложное.

Синтаксис

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

В ifblock защищает условное выражение. Блок, связанный с оператором 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..if.
  • Условие if может иметь от нуля ко многим else ... if, и они должны стоять раньше, чем else.
  • Как только else..if удастся, ни один из оставшихся else..if or else не будет проверен.

Пример: else… если лестница

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 проверяет соответствие текущего значения из списка значений, это очень похоже на оператор switch в языке C. Во-первых, обратите внимание, что выражение, следующее за ключевым словом match, необязательно заключать в круглые скобки.

Синтаксис показан ниже.

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

В приведенном ниже примере state_code соответствует списку значений MH, KL, KA, GA- если найдено какое-либо совпадение, в состояние переменной возвращается строковое значение . Если совпадений не найдено, будет совпадать регистр _ по умолчанию и возвращается значение Неизвестно .

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