《Rust编程入门》5.1 条件判断(if语句)

5.1 条件判断(if 语句) 在编程中,条件判断是控制程序执行路径的重要工具。Rust 提供了功能强大的 if 语句,它不仅支持基本的条件判断,还具有表达式的特性,可以直接返回值。

5.1 条件判断(if 语句)

在编程中,条件判断是控制程序执行路径的重要工具。Rust 提供了功能强大的 if 语句,它不仅支持基本的条件判断,还具有表达式的特性,可以直接返回值。


5.1.1 基本 if 语句

if 语句的语法非常简单:条件必须是布尔类型,if 块中的代码仅在条件为 true 时执行。

基本语法

fn main() {
    let number = 5;

    if number > 0 {
        println!("The number is positive.");
    }
}

注意事项

  • 条件表达式必须返回布尔值 (bool)。
  • Rust 不允许将非布尔值作为条件,例如 if number 会报错。

5.1.2 if-else 语句

当需要在条件不满足时执行另一段代码,可以使用 else 块。

示例

fn main() {
    let number = -3;

    if number > 0 {
        println!("The number is positive.");
    } else {
        println!("The number is not positive.");
    }
}

5.1.3 多条件分支

如果需要判断多个条件,可以使用 else if

示例

fn main() {
    let number = 0;

    if number > 0 {
        println!("The number is positive.");
    } else if number < 0 {
        println!("The number is negative.");
    } else {
        println!("The number is zero.");
    }
}

执行顺序

  • Rust 从上到下依次检查条件。
  • 一旦某个条件为 true,后续条件将被忽略。

5.1.4 if 作为表达式

在 Rust 中,if 是一个表达式,这意味着它可以返回值。这使得代码更加简洁且灵活。

示例:根据条件赋值

fn main() {
    let number = 10;
    let result = if number % 2 == 0 {
        "even"
    } else {
        "odd"
    };
    println!("The number is {}.", result);
}

注意事项

  • 所有分支的返回值类型必须一致,否则会编译报错。
  • 示例(错误代码):
    let result = if true {
        42
    } else {
        "not a number" // 编译错误:类型不一致
    };
    

5.1.5 嵌套 if 语句

if 语句可以嵌套使用,但深度嵌套会降低代码的可读性。

示例

fn main() {
    let x = 5;
    let y = 10;

    if x > 0 {
        if y > 0 {
            println!("Both x and y are positive.");
        } else {
            println!("x is positive, but y is not.");
        }
    }
}

5.1.6 使用逻辑运算符简化条件判断

Rust 提供了逻辑运算符 &&(与)、||(或)和 !(非),可以用来简化多条件判断。

示例

fn main() {
    let x = 5;
    let y = 10;

    if x > 0 && y > 0 {
        println!("Both x and y are positive.");
    } else {
        println!("At least one of x or y is not positive.");
    }
}

逻辑运算符优先级

  • !(非)优先级最高。
  • &&(与)优先于 ||(或)。

5.1.7 if 与常见错误

1. 条件表达式非布尔值

fn main() {
    let number = 1;

    // 错误示例:条件表达式不是布尔值
    if number { // 编译错误
        println!("This will not compile.");
    }
}

2. 返回值类型不一致

fn main() {
    let result = if true {
        42
    } else {
        "error" // 编译错误:类型不一致
    };
}

5.1.8 总结

Rust 的 if 语句功能强大,支持基本条件判断、多条件分支、嵌套和表达式用法。通过合理使用 if,可以编写清晰、高效的逻辑控制代码。以下是使用 if 语句的最佳实践:

  • 避免深度嵌套,尽量使用逻辑运算符简化条件。
  • 利用 if 作为表达式,减少重复代码。
  • 确保所有分支的返回值类型一致。

在下一节中,我们将介绍 Rust 的循环结构,包括 loopwhilefor,学习如何实现高效的流程控制。

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页