当前位置: 首页 > news >正文

Rust-02-变量与可变性

在Rust中,变量和可变性是两个重要的概念。

  • 变量:变量是用于存储数据的标识符。在Rust中,变量需要声明其类型,例如:
let x: i32 = 5; // 声明一个名为x的变量,类型为i32(整数),值为5
  • 可变性:Rust中的变量有两种可变性:可变(mutable)和不可变(immutable)。默认情况下,变量是不可变的,这意味着一旦赋值,其值就不能更改。要使变量可变,需要在声明时使用mut关键字,例如:
let mut x: i32 = 5; // 声明一个名为x的可变变量,类型为i32(整数),值为5
x = 6; // 修改x的值为6

需要注意的是,在同一作用域内,一个可变变量不能同时被多次声明为不可变。例如,以下代码会导致编译错误:
在这里插入图片描述

常量

类似于不可变变量,常量 (constants) 是绑定到一个名称的不允许改变的值,不过常量与变量还是有一些区别。首先,不允许对常量使用 mut 。常量不光默认不可变,它总是不可变。声明常量使用 const关键字而不是 let ,并且 必须 注明值的类型。常量可以在任何作用域中声明,包括全局作用域,这在一个值需要被很多部分的代码用到时很有用。最后一个区别是,常量只能被设置为常量表达式,而不可以是其他任何只能在运行时计算出的值。

    const FMT_DATE_TIME_YMDHMS: &str = "yyyy-MM-dd hh:mm:ss"; // 常量

在声明它的作用域之中,常量在整个程序生命周期中都有效,此属性使得常量可以作为多处代码使用的全局范围的值,例如一个游戏中所有玩家可以获取的最高分或者光速。将遍布于应用程序中的硬编码值声明为常量,能帮助后来的代码维护人员了解值的意图。如果将来需要修改硬编码值,也只需修改汇聚于一处的硬编码值。

作用域

使用let对变量重新计算和使用mut是有区别的,当不小心尝试对变量重新赋值时,如果没有使用 let关键字,就会导致编译时错误。通过使用 let ,我们可以用这个值进行一些计算,不过计算完之后变量仍然是不可变的。

fn main() {let x = 5;let x = 1 + x;{let x = x + 5;println!("{}",x); // 6+5=11}println!("{}",x); // 6
}

结果

C:/Users/tom.qu/.cargo/bin/cargo.exe run --color=always --package rust --bin rustFinished dev [unoptimized + debuginfo] target(s) in 0.00sRunning `target\debug\rust.exe`
11
6

mut 与覆盖的另一个区别是,当再次使用 let 时,实际上创建了一个新变量,我们可以改变值的类型,并且复用这个名字。
在这里插入图片描述

总结

    let mut x = 5; // 可变变量let y = 5; // 不可变变量const FMT_DATE_TIME_YMDHMS: &str = "yyyy-MM-dd hh:mm:ss"; // 常量// 使用let可以复用变量名// 变量作用域问题
http://www.lryc.cn/news/368253.html

相关文章:

  • mov指令中不允许的操作——汇编语言
  • Python进阶-部署Flask项目(以TensorFlow图像识别项目WSGI方式启动为例)
  • WooYun-2016-199433 -phpmyadmin-反序列化RCE-getshell
  • 社交“学习伙伴”:Meta Llama助力对话升级
  • LabVIEW 反向工程的实现与法律地位
  • Python怎么做单元测试
  • ghidra
  • 如何解决网络问题?
  • 高速USB转串口芯片CH343
  • C++ MPI多进程并发
  • UFS协议入门-分层结构
  • Docker Desktop - WSL distro terminated abruptly
  • HTML-CSS练习例子
  • 【JavaScript脚本宇宙】创造声音的魔法:深入了解Web音频处理库
  • 苹果需要专注于让人工智能变得实用,而不是华而不实
  • 安全专业的硬件远控方案 设备无网也能远程运维
  • Freeswitch-soundtouch-变声开发
  • Unity2D游戏制作入门 | 09(之人物动画制作)
  • 【自动部署】4.阿里云ECS服务器 IDEA自动部署项目
  • [Algorithm][动态规划][01背包问题][目标和][最后一块石头的重量Ⅱ]详细讲解
  • LabVIEW控制PLC的实现方式
  • JSTL知识点讲解与配置
  • Autodesk 3ds Max软件下载安装;3ds Max功能强大的三维建模、渲染软件安装包获取
  • 联合体和枚举<C语言>
  • 算法人生(21):从“React框架”看“情绪管理”
  • 千益畅行:合法合规的旅游卡服务,真实可靠的旅游体验
  • Linux下软件安装
  • 在线按模板批量生成文本工具
  • Linux之关机重启
  • 【Android】使用EventBus进行线程间通讯