Rust 中的条件语句

Beginner

This tutorial is from open-source community. Access the source code

简介

在本实验中,我们将学习如何在 Rust 中使用 if-else 语句。与其他编程语言类似,Rust 中的 if-else 语句在条件周围不需要括号,并且每个条件后面都跟着一段代码块。这些条件语句是表达式,因此所有分支必须返回相同的类型。在提供的代码示例中,我们首先检查变量 n 是否小于 0,如果是,则打印 n 是负数。如果 n 不小于 0,我们接着检查它是否大于 0,并打印 n 是正数。最后,如果前面的条件都不满足,我们打印 n 是零。另一个示例展示了 if-else 语句如何用作表达式,为变量 big_n 赋一个新值。如果 n 在 -10 到 10 之间,它会打印 n 是一个小数,并将 10 * n 赋给 big_n。否则,它会打印 n 是一个大数,并将 n / 2 赋给 big_n。最后会打印出 nbig_n 的最终值。

注意:如果实验未指定文件名,你可以使用任何你想要的文件名。例如,你可以使用 main.rs,并通过 rustc main.rs &&./main 进行编译和运行。

if/else

使用 if-else 进行分支操作与其他语言类似。与许多语言不同的是,布尔条件不需要用括号括起来,并且每个条件后面都跟着一个代码块。if-else 条件语句是表达式,并且所有分支必须返回相同的类型。

fn main() {
    let n = 5;

    if n < 0 {
        print!("{} is negative", n);
    } else if n > 0 {
        print!("{} is positive", n);
    } else {
        print!("{} is zero", n);
    }

    let big_n =
        if n < 10 && n > -10 {
            println!(", and is a small number, increase ten-fold");

            // 此表达式返回一个 `i32` 类型的值。
            10 * n
        } else {
            println!(", and is a big number, halve the number");

            // 此表达式也必须返回一个 `i32` 类型的值。
            n / 2
            // TODO ^ 尝试用分号抑制此表达式。
        };
    //   ^ 别忘了在这里加分号!所有 `let` 绑定都需要它。

    println!("{} -> {}", n, big_n);
}

总结

恭喜你!你已经完成了“if/else”实验。你可以在 LabEx 中练习更多实验来提升你的技能。