语句与表达式

99 阅读1分钟

概述

  • Rust 程序由语句和表达式组成。
  • 语句执行操作但不返回值。
  • 表达式计算并返回一个值。

语句

  • 语句用于执行操作但不返回值,例如变量声明。
  • let 是一条语句,不能赋值给其他变量。

错误的 let 语句使用示例

fn main() {
    let b = (let a = 8); // 错误:期望表达式,却发现 `let` 语句
}

错误提示:

error: expected expression, found statement (`let`)

表达式

  • 表达式计算并返回一个值。
  • 表达式可以是简单的数值运算,也可以是函数调用或语句块。

表达式示例

fn main() {
    let y = {
        let x = 3;
        x + 1 // 表达式:返回 x + 1 的结果
    };
    println!("The value of y is: {}", y);
}

表达式与语句块

  • 语句块可以作为表达式,如果其最后一行是表达式。
  • 表达式不能以分号结束,否则会变成语句。

语句块作为表达式示例

fn main() {
    let y = {
        let x = 3;
        x + 1 // 不加分号,因此是表达式
    };
}

表达式返回值

  • 如果表达式没有显式返回值,它将隐式返回单元类型 ()。

隐式返回单元类型的示例

fn main() {
    assert_eq!(ret_unit_type(), ());
}

fn ret_unit_type() {
    let x = 1;
    // 没有返回语句,隐式返回 ()
}

控制流表达式

  • if 语句块也可以作为表达式使用。

if 表达式示例

fn main() {
    let y = if x % 2 == 1 {
        "odd"
    } else {
        "even"
    };
}

总结

  • 语句用于执行操作但不返回值。
  • 表达式计算并返回一个值。
  • 语句块可以作为表达式,如果其最后一行不是语句。
  • 表达式不能以分号结束,否则会变成语句。
  • 理解语句和表达式的区别对于 Rust 编程至关重要。