Rust - 决策控制
-
简述
决策结构要求程序员指定一个或多个要由程序评估或测试的条件,以及在确定条件为真时要执行的一个或多个语句,以及可选地,如果条件为真则要执行的其他语句条件被确定为假。下面显示的是在大多数编程语言中发现的典型决策结构的一般形式 -序号 语句 & 描述 1 if 语句if语句由一个布尔表达式后跟一个或多个语句。2 if...else 语句if语句可以跟着一个可选的其他语句,当布尔表达式是假的,其执行。3 else...if and 嵌套 if语句您可以在另一个if或else if语句中使用一个if或else 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