概述
- 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 编程至关重要。