理解 Rust 是一门“基于表达式”的语言。深入解析分号的魔力、隐式返回以及如何编写高内聚的局部代码块。
1. 语句 (Statements) 与 表达式 (Expressions)
- 语句:执行操作但不返回值的指令(以分号
;结尾)。 - 表达式:计算并产生一个值的代码片段(无结尾分号)。
fn calculate(x: i32) -> i32 {
let y = {
let temp = x * 2;
temp + 1 // 表达式,注意末尾没有分号!
};
y * 3 // 隐式返回整个函数的结果
}
如果给最后一行的 y * 3 加上分号,它将变成一条语句,返回值会隐式退化为单例单元类型 (),从而触发编译器类型不匹配报错。