跳到主要内容

变量与不可变

  • 声明变量使用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 声明的同名新变量,它的类型可以与之前不同