03_变量与值可变性

rust定义变量

  • let关键字
    用于声明变量:let (mut) 变量名

  • 变量值是否改变
    默认变量值不可变(Immutable),在声明变量时加上mut才为可变变量。

let x = 5;
x = 6;
let mut y = 6;
y = 8;
let mut y: u32 = 9;

第二行编译报错,上边变量声明时未标注类型的,默认是i32类型。

rust定义常量

常量(constant),常量在绑定值以后一直不再可变。使用const声明。
程序运行期间,常量在声明作用域内一直有效。

常量与不可变变量的区别

常量不可用mut,且永远不可变
常量声明使用const,且类型必须被标注
常量可在任何作用域内声明,包括全局作用域
常量声明时只可赋值(绑定)为常量表达式,等号右侧不能是函数调用,也不能是运行时才能计算出的值

常量命名规范:Rust里常量使用全大写字母,每个单词之间用下划线分开。
如:

const MAX_NUM: u32 = 100_000;

Shadowing(隐藏)

可用相同名字声明新的变量,新的变量会shadow(隐藏)之前声明的同名变量。
如:()

let x = 5;
let x = x + 1;
let y = x;
let x = "9";

前后x是两个变量,第二行的x隐藏了第一行的x变量,第三行的x是第二行的x=6。

shadow和mut的区别

若不用let,重新给非mut变量赋值报错
使用let声明同名变量,也是不可变的
使用let声明同名新变量,类型可与上一个不同

let s = "test"; // s是str类型
let s = s.len(); // s为usize类型了

let mut t = "test";
t = t.len(); // 编译报错
posted @ 2023-10-11 15:17  00lab  阅读(9)  评论(0编辑  收藏  举报