侧边栏壁纸
博主头像
Dioxide-CN博主等级

茶边话旧,看几许星迢露冕,从淮海南来。

  • 累计撰写 50 篇文章
  • 累计创建 49 个标签
  • 累计收到 21 条评论

目 录CONTENT

文章目录

Rust学习笔记:3.1 变量与可变性

Dioxide-CN
2021-11-23 / 0 评论 / 1 点赞 / 102 阅读 / 898 字
温馨提示:
本文最后更新于 2022-08-02,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

3.1 变量与可变性

  • 声明变量使用 let 关键字
  • 默认情况下,变量是不可变的(Immutable)
    • 案例:variables
fn main() {
    let mut x = 5;
    println!("x = {}", x); //5 可变
    x = 6;
    println!("x = {}", x); //6 可变
    let x = 7;
    println!("x = {}", x); //7 不可变
}

3.1.1 变量与常量

  • 常量 (constant),常量是在绑定值以后也是不可变的,但是他与不可变的变量有很多区别:
    1. 不可以使用 mut,常量是永远也不可变的
    2. 生命常量使用 const 关键字,他的类型必须被标注
    3. 常量可以在任何作用于内进行生命,包括全局作用域
    4. 常量只可以绑定到常量表达式,无法绑定到函数的调用结果或只能在运行时才能计算出的值
  • 在程序运行期间,常量在其声明的作用域内一直有效;
  • 命名规范: Rust 里常量使用全大写字母,每个单词之间用下划线分开,例如:
    • MAX_POINTS
  • 例子:const MAX_POINTS:u32 = 100_000;
const MAX_POINTS:u32 = 100_000;
fn main() {
	const MAX_POINTS:u32 = 100_000;
}

3.1.2 Shadowing(覆盖)

  • 可以使用相同的名字声明新的变量,新的变量就会 shadow(隐藏)之前声明的同名变量。
    • 在后续的代码中这个变量名代表的就是新的变量
fn main() {
	let x = 5;
	let x = x + 1; //6
	let x = x * 2; //12
	println!("x is {}", x); //12
}
  • shadow 和把变量标记为 mut 是不一样的:
    • 如果不使用 let 关键字,那么重新给非 mut 的变量赋值会导致编译时错误;
    • 而使用 let 声明的同名新变量,也是不可变的;
    • 使用 let 声明的同名新变量,他的类型可以与之前不同;
fn main() {
    let spaces = "    "; //4个空格 $str
    let spaces = spaces.len(); //4 usize
    println!("spaces is {}", spaces); //4
}
1

评论区