Rust 常见编程概念-变量和常量篇

Rust 的变量与可变性

在 Rust 的默认情况下,变量是不可变的,因为它为开发者提供了一个安全性和简单并发性的方式来编写代码,但是开发人员依旧可以选择使变量可以发生改变,只是使用mut。具体例子如下:

fn main() {
  // Rust的变量是一旦声明就不能改变,所以如下代码不能编译成功
  // let num = 5;
  // println!("The value of x is: {num}");

  // num = 6;
  // println!("The value of x is: {num}");

  // Rust需要改变变量的时候,需要使用mut关键字
  let mut num = 5;
  println!("The value of x is: {num}");

  num = 6;
  println!("The value of x is: {num}");
}

注意:假如在原先变量的基础上进行计算后赋值的话,Rust 是允许的

let x: i32 = 5; // x = 5
let x = x + 1; // x = 6

Rust 常量

在 Rust 中常量是不允许进行修改,并且使用mut来尝试修改常量的话会导致编译不能通过。

常量可以在任何范围内声明。包括全局范围,这使得它们对于许多代码部分需要了解的值非常有用。

常量只能是常量表达式,而不是在运行时计算的结果。具体实例如下:

const FILE_PATH = "/demo";
const THREE_HOURS_IN_SECONDS: u32 = 60 * 60 * 3;

Rust 变量阴影

在 Rust 中我们可以声明一个与前面变量同名的新变量,而这个过程会让第一个变量被第二个变量进行覆盖。在重新赋值的过程中,变量名都是同一个。例如如下的代码:

// 编译能够通过
let num = 2; // num = 2
let num = num + 1; // num = 3

假如在作用域中进行同名赋予新值的话,被覆盖的变量只在作用域中起效,作用域之外会还原到之前的变量值,具体实例如下:

fn main() {
  let num = 5; // num = 5
  let num = num - 1; // num = 4

  {
    let num = num * 2;
    println!("num 的值是: {num}"); // num = 8
  }

  println!("The value of x is: {num}"); // num = 4
}

当我们使用 let 再次声明一个同名变量的时候,相当于创建一个全新的变量,所以程序可以在编译的时候不会报错,例如如下的代码:

let name = "tom"; // 字符串类型的变量
let name = name.len(); // 数值类型的变量

上述的操作是允许的,但是我们使用 mut 进行同名变量的值修改的话是不允许的,程序在编译的时候会报错,例如:

/**
 * error: expected item, found keyword `let`
 * --> tempCodeRunnerFile.rs:1:1
 *   |
 * 1 | let name = "tom";
 *   | ^^^ consider using `const` or `static` instead of `let` for global variables
 */
let name = "Tom";
name = name.len();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值