Rust条件控制
条件结构要求程序员指定一个或多个要由程序测试的条件,以及条件为真时要执行的一条或多条语句,以及条件为假时要执行的其他语句。
下面显示的是大多数编程语言中常见的典型条件结构的一般形式:
序号 | 声明与说明 |
---|---|
1 | if 语句 if 语句由布尔表达式组成,后跟一个或多个语句。 |
2 | if...else 语句 if 语句后可以有一个可选的 else 语句,当布尔表达式为false时执行。 |
3 | else ... if和嵌套的if语句 你可以用一个 if or else if 另一个里面的语句 if or else 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") ; } }
上面的示例将打印数字为正如if块指定的条件为true。
if...else语句
if后面可以有一个可选的else。如果由if语句测试的布尔表达式评估为false,则else块将执行。
if boolean_expression { //如果布尔表达式为true,则将执行语句 } else { //如果布尔表达式为false,则将执行语句 }
if块保护条件表达式。如果布尔表达式的值为true,则执行与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 { //声明expression1的计算结果是否为true } else if boolean_expression2 { //声明expression2的计算结果是否为true } else { //如果expression1和expression2都返回false,则声明 }
在使用if ... else ... if和else语句时,有几点需要牢记。
一个if可以有零个或另一个,并且必须在其他任何之后。
一个if可以具有零个到多个else..if,并且它们必须位于else之前。
如果else..if成功,则不会测试其余的else..if或其他任何东西。
示例: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 => { //语句; }, constant_expr2 => { //语句; }, _ => { // 默认 } };
在下面的示例中,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