变量与可变性
一 变量
- 变量默认是不可变的,声明一个变量后不可以在改变这个变量的值
- 使用
mut
关键字声明一个变量是可变的。 - 可变性是一种权衡。
二 常量
- 使用
const
关键字,而非let
声明一个常量 - 常量声明必须指定类型:
const MAX_POINTS: u32 = 100_000;
rust常量命名规范是:全字母大写, 单词间以下划线分隔,rust的数字为了方便阅读也可以使用下划线分割。
3. 将一个在整个程序中使用的值设为常量,有利于传递该值的含义给未来的代码维护人员。
4. 常量便于修改,只需修改一个常量,便可更新程序中所有使用该常量的值
三 变量与常量的异同
相同点:都不可变
不同点:
- 常量不是默认不可变,而是一直不会改变。声明方式不一样,变量使用
let
常量使用const
且必须指定常量的类型。 - 常量可以在任意作用域里声明
- 常量只能设置为常量表达式,而不能设置为函数调用的结果或只能在运行时计算的任何其他值。
四 覆盖 shadowing
-
变量的覆盖不同于将变量设为可变变量。 如果不使用
let
为变量重新赋值,会得到编译错误,但是使用let
为同一变量重新赋值可是覆盖之前的该变量的值。覆盖特性让变量可以改变 -
覆盖的好处是可以让我们避免于起不同的变量名,可以直接复用之前的变量名,同时不必关心变量类型的更改。另外复用变量名也更高效和便于理解。