系列文章目录
【rust】| 00——开发环境搭建
【rust】| 01——编译并运行第一个rust程序
【rust】| 02——语法基础_变量(不可变?)和常量
文章目录
- 1. 变量
- 1.1 变量的定义
- 1.2 试验变量的不可变特性
- 2. 常量
- 2.1 常量的定义
- 3. 覆盖(同名变量)
- 3.1 修改已定义变量的数据类型
- 3.2 1个变量当多个用
1. 变量
通常变量用作存储值。在其他编程语言如C/C++等中变量 默认状态是可以变的。而Rust语言 其拥有安全和简单并发的特性,它的变量默认情况下是 不可变的。让我们深入了解 它所拥有的特性吧。
1.1 变量的定义
rust中变量的定义方式:
关键字let + 变量名; // 定义 不可变变量(默认)
关键字let + 关键字mut + 变量名; // 定义 可变变量
注:rust中 通过let关键字定义变量 可以根据值 自动识别数据类型
1.2 试验变量的不可变特性
1、先定义一个 不可变变量并赋值
let a = 10;
2、修改变量
let a = 77;
3、编译看结果
可以看到编译报错了 很清楚的提示了 不能修改不可变变量的值
不可变变量名 前多加个 mut 关键字 让其成为可变变量 eg: let mut a=10;
2. 常量
常量:不可修改的变量。
在C/C++中常量的定义 关键字const + 数据类型 + 常量名 , 可是这样定义的常量是真正意义的常量吗。结果是我们可以通过操作地址的方式修改了它。呜呜呜 大骗子。
在rust中定义的常量 也是用 const 。 是正真的常量哦,常量的意义和前面 let定义的不可变变量很相近 但还是是有细微差别的。
区别如下:
const定义的常量 | let定义的不可变变量 |
---|---|
1、始终不可变 不可加mut | 默认不可变 加mut可变 |
2、定义时需要 +数据类型 | 无需数据类型 自动识别 |
3、只能做常量表达式 |
注意:定义常量时注意这些事项哦
2.1 常量的定义
在rust中定义常量
const + 常量名: + 数据类型 = 值;
注意事项:
1、常量名——约定为 大写字母可加下划线/数字
2、常量名后面有 : 分号
2、需要定义数据类型
tips:rust中的数据类型后面讲哈
错误例子如下
3. 覆盖(同名变量)
在rust中 可以定义同名变量。后面定义的可以覆盖前面定义的变量,如果后者(覆盖者)变量的作用域结束 则前者(被覆盖的变量)重新存在。变量的生命周期决定了谁才是命大的哪一个。只可以变量哦(常量不可以)。
下面通过几个例子了解覆盖的应用场景:
3.1 修改已定义变量的数据类型
运行结果
分析
可以看到 发生了2次覆盖 变量的类型也发生了改变 在定义变量是系统自动识别(根据后面的值)到是整型,通过覆盖我们实现了重新定义类型。
在C/C++中我们需要 定义不同类型变量存储不同数据
而在rust语言中 可以通过覆盖的方式实现用一个变量存储不同类型数据
作用:改变变量类型
3.2 1个变量当多个用
运行结果
A班的人数—— 7
老师的人数——100
语文成绩————111.11
谁笑到了最后 哈哈哈——7
分析
可以看到 1的生命周期最长笑到了最后 生命周期限制着变量