变量与不可变
- 声明变量使用let关键字
- 变量默认是immutable的,不能被修改
- 在变量后面加mut关键字,可以修改变量
变量与常量
- 常量(constant),常量在绑定值以后也是不可变的,但是与不可变的变量有很多区别:
- 不可使用mut,常量永远都是不可变的
- 声明常量使用const关键字,它的类型必须被标注
- 常量可以在任何作用域中声明,也包括全局作用域
- 常量只可以绑定到常量表达式,无法绑定到函数的结果或者是运行时才能计算出的值
- 在程序运行期间,常量在其声明的作用域中一直有效
- 命名规范:常量使用大写字母,单词间使用下划线
- 例子:
const MAX_POINTS:u32 = 100_000;
Shadowing(隐藏)
- 可以使用相同的名字声明新的变量,新的变量就会shadow(隐藏)之前声明的同名变量
- 在后续的代码中这个变量名代表的就是新的变量
- (例子)
let x = 5;
// x = x + 1; 报错,x 为不可变
let x = x + 1; 正确,shadowing - shadow 和把变量标记为 mut 是不一样的:
- 如果不使用let 关键字,那么重新给非 mut 的变量赋值会导致编译时错误
- 而使用let 声明的同名新变量,也是不可变的 -使用let 声明的同名新变量,它的类型可以与之前不同