变量¶
Rust 中有变量和常量。
声明变量用 let
关键字,声明常量用 const
关键字。
变量¶
Rust 中的变量默认是,immutable,不可变的。
因为 Rust 认为应该显式地区分可变和不可变。默认不可变是因为,据统计,一般而言不被修改的变量要比被修改的变量多。不可变变量有利于防止一些傻叉修改了本不该修改的值导致灾难。
要使得变量可变,需要加上 mut
关键字。
常量¶
const
初始化常量,通常是 1, 2, 3 这种字面量,或者常量函数的返回值。
- 常量可以在任何作用域内声明,包括全局作用域。
- 常量只能绑定到常量表达式,无法绑定到函数的调用结果,或只能在运行时才能计算出的值。
- 程序运行期间,常量在其作用域内一直有效。
Tip
let
与 const
的区别在于: let 在初始化在程序中是不确定的,且声明与赋值可以分开。const 赋值只能赋字面量,在初始化时值是确定的;
- let 声明的是变量,const 声明的是常量;
- let 能类型推导,const 不能类型推导,在声明时必须指定类型;
- let 可以使用
mut
关键字使得变量可变。const 不可以使用mut
关键字,常量永远不可变。
影藏 Shadowing¶
Rust 中可以使用相同的名字声明新的变量,新的变量就会 shadow(影藏)之前声明的同名变量,在后续的代码中这个变量名代表的就是新的变量。
shadow 和把变量标记为 mut 不同,如果不使用 let 关键字,那么重新给非 mut 变量赋值会报错。
-
使用 let 声明同名变量(影藏),也是不可变的。
-
影藏的时候可以改变变量的可变性
-
影藏的时候可以改变变量的类型