Rust的变量、常量与遮蔽(Shadowing)
2022-05-31
Rust的变量,常量,Shadowing
变量
-
声明变量使用let关键字
-
默认情况下,Rust的变量是不可变的(immediate),但这与常量仍有很大的区别
-
在声明变量时,如果变量名前加上_mut_关键字,就可以使此变量可变
-
变量的声明使用蛇形命名法
例子:
let mut question_will_send = "Who am I ?";
常量
-
使用const关键字声明常量
-
不可以使用_mnt_关键字,常量永不可变
-
常量在声明时必须同时声明数据类型
-
常量可以在任何作用域中声明,包括全局作用域
-
常量只可以绑定到常量表达式,无法绑定到函数的调用结果或者只有在运行时才能计算出的值(即常量的值和类型在编译期就必须被确定)
-
在程序运行期间,常量在其声明的作用域中一直有效
-
常量的命名规范为
1.使用大写字母
2.单词间使用下划线连接
例子:
const MAX_USER_ID: U32 = 100_000; //100_000即为100000,添加下划线可增强可读性,java中也有类似的使用
Shadowing(遮蔽/隐藏)
-
Rust中可以使用相同的名字声明变量,新的变量就会把之前声明的同名变量Shadow(遮蔽掉)
let x = 5; let x = x + 1;
这种语法在Java等大多数语言中是不允许的,却是Rust的一大特点
-
shadow的变量可以更改为与之前不同的数据类型
例子:
fn main() { let space = " "; let space = space.len(); println!("空格数量为:{}",space); }
但如果不使用shadow时,一个变量的数据类型不可更改:
例子: