变量的隐藏 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;即是语句
