Rust - 变量
1.1、变量与可变性
- 声明变量使用let关键字
- 默认情况下,变量是不可变的
- 声明变量时,在变量前面加上mut,就可以使变量可变
fn main() {
// 默认数字是i32类型
let mut num = 10;
// 如果加mut情况下重新赋值会报错
num = 20;
println!("number is {}",num);
}
1.2、变量与常量
- 常量:常量在绑定值以后也是不可变的,但是它与不可变的变量有区别
- 不可以使用mut,常量永远不可变
- 声明常量使用const关键字,它的类型必须被标注
- 常量可以在任何作用域内进行声明,包括全局作用域
- 常量只可以绑定到常量表达式,无法绑定到函数的调用结果或只能在运行时才能计算出的值
- 在程序运行期间,常量在其声明的作用域内一直有效
- 命名规范:Rust里常量使用全大写字母,每个单词之间用下划线分开
// 可以在任何地方声明变量
const MAX_POINIS:i32 = 100_00;
fn main() {
println!("number is {}",MAX_POINIS);
}
1.3、shadowing(隐藏)
- 可以使用相同的命令声明新的变量,新的变量就会shadow之前声明的同名变量
- shadow和把变量标记为mut是不一样的
- 如果不适用let关键字,那么在重新给非mut的变量赋值会导致编译时错误
- 而使用let声明的同名新变量,也是不可变的
- 使用let声明的同名新变量,它的类型可以与之前不同
fn main() {
// 第一次声明的x
let x = 5;
// 与使用mut关键字不同,第二次声明的x是重新声明了一个新变量
let x = x+1;
let x = x*2;
// 声明不同类型的同名变量
let spaces_str = " ";
let spaces_num = spaces_str.len();
println!("number is {}",x);
}
推荐阅读: