变量的隐藏 Shadowing
定义一个与之前变量同名的新变量,而新变量会 隐藏 之前的变量。
示例:
fn main() {
let x = 5;
let x = x + 1;
let x = x * 2;
println!("The value of x is: {}", x);
}
这个程序首先将 x 绑定到值 5 上。接着通过 let x =
隐藏 x,获取初始值并加 1,这样 x 的值就变成 6 了。第三个 let
语句也隐藏了 x,将之前的值乘以 2,x 最终的值是 12。
当再次使用 let
时,实际上创建了一个新变量,我们可以改变值的类型,但复用这个名字。
const常量
声明常量使用 const
关键字而不是 let
,并且 必须 注明值的类型
常量可以在任何作用域中声明,包括全局作用域
常量只能被设置为常量表达式,而不能是函数调用的结果,或任何其他只能在运行时计算出的值
示例:
const NUMBER:i32 = 3;
fn main() {
println!("Number {}", NUMBER);
}
表达式与语句
Rust
是基于表达式的语言
表达式:
- 表达式末尾无分号,且返回一个值
- 函数调用,宏调用,花括号都是表达式
- 代码块(花括号)的值是其最后一个表达式的值
示例:
let 与 if 语句相结合
let number = if condition {
5
} else {
"six"
};
因为 if 语句是一个表达式,所以可以给 let 语句的变量赋值
代码块的返回值
let y = {
let x = 3;
x + 1
};
x + 1
是语句中最后的表达式并返回了值
语句:
- 语句(Statements)是执行一些操作但不返回值的指令
- 语句末尾有分号,且没有返回值
let x = 3;
即是语句