前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Rust学习笔记:3.1 变量与可变性

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

作者头像
DioxideCN
发布2022-08-05 19:27:25
2500
发布2022-08-05 19:27:25
举报

3.1 变量与可变性

  • 声明变量使用 let 关键字
  • 默认情况下,变量是不可变的(Immutable)
    • 案例:variables
代码语言:javascript
复制
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;
代码语言:javascript
复制
const MAX_POINTS:u32 = 100_000;
fn main() {
	const MAX_POINTS:u32 = 100_000;
}

3.1.2 Shadowing(覆盖)

  • 可以使用相同的名字声明新的变量,新的变量就会 shadow(隐藏)之前声明的同名变量。
    • 在后续的代码中这个变量名代表的就是新的变量
代码语言:javascript
复制
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 声明的同名新变量,他的类型可以与之前不同;
代码语言:javascript
复制
fn main() {
    let spaces = "    "; //4个空格 $str
    let spaces = spaces.len(); //4 usize
    println!("spaces is {}", spaces); //4
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 3.1 变量与可变性
    • 3.1.1 变量与常量
      • 3.1.2 Shadowing(覆盖)
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档