Rust条件控制


条件结构要求程序员指定一个或多个要由程序测试的条件,以及条件为真时要执行的一条或多条语句,以及条件为假时要执行的其他语句。

下面显示的是大多数编程语言中常见的典型条件结构的一般形式:

1620205347353115.jpg

序号声明与说明
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