Rust 中的变量与可变性:新手指南

本文介绍了 Rust 语言中变量和可变性的概念。Rust 默认变量是不可变的,需要使用 mut 关键字才能声明可变变量。此外,文章还讲解了变量遮蔽(shadowing)的用法,它允许在同一作用域内使用相同的变量名而无需使其可变。文章还提出了使用不可变变量的实践方法,并给出了使用 const 定义全局常量的方式。

Rust 中的变量和可变性:初学者指南

Rust 以其安全性和性能而闻名,而帮助实现这一点的核心功能之一是其对变量和可变性的独特处理。与许多编程语言不同,Rust 鼓励你编写避免意外更改的代码,从而有助于在错误发生之前防止它们。

在本文中,我们将探讨:

  • Rust 中的变量是什么
  • 默认情况下不可变的概念
  • 如何使变量可变
  • 遮蔽 (Shadowing) 与可变性
  • 最佳实践

让我们开始为变量赋值

fn main() {
    let mut x = 6;
    println!("The value of x is: {x}");
    x = 6;
    println!("The value of x is: {x}");
}

在上面的代码片段中,我将 6 赋值给变量 x。重要的是要将 "mut" 关键字添加到变量以使其可变。

当你运行代码时,你会在终端中看到这个:

Rust 中的可变性

默认情况下,Rust 中的变量是不可变的。这意味着一旦你分配了一个值,你就不能更改它。为了让你能够更改它,你需要将 "mut" 关键字添加到变量。

遮蔽 (Shadowing):

现在我们来谈谈 Rust 中的遮蔽 (shadowing)。

在 Rust 中,遮蔽允许你声明一个与之前的变量同名的新变量,从而在特定作用域内有效地替换旧变量。它允许你重用变量名,而无需使其可变。

在运行时,编译器会选择后者。

例如:你可以在一个作用域内重复使用变量 X 两次。

 main() {

    let x = 5;

    let x = x + 1;

    {
        let x = x * 2;
        println!("The value of x in the inner scope is: {x}");
    }

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

这是结果

逐行解释:

  1. let x = 5;
  • 声明一个值为 5 的变量 x
  1. let x = x + 1;
  • 发生遮蔽:x 被重新定义为 5 + 1,所以现在 x = 6
  1. 内部作用域 { ... }
  • 引入了一个新的块作用域。
  • 在此块内:let x = x * 2; 获取当前的 x(即 6),并再次将其遮蔽为 6 * 2 = 12.
  • 这个 x = 12 仅存在于块内
  1. 块结束后
  • x = 12 超出作用域。
  • 外部的 x(即 6)仍然有效。

重要概念:

  • 遮蔽是有作用域的。 使用最近的绑定,但一旦你离开该作用域,先前的版本就会“返回”。
  • 它不会改变原始变量;它创建一个具有相同名称的新变量

当你想要转换一个值而不使变量可变时,遮蔽非常有用。

最佳实践

  • 默认情况下使用不可变变量。
  • 仅在真正需要更改值时才使用 mut
  • 当转换变量的值而不需要可变性时,首选 遮蔽
  • 对于永远不会改变且全局使用的值,使用 const

结论

Rust 处理变量和可变性的方式鼓励更安全、更可预测的代码。通过使不可变性成为默认设置,Rust 促使你思考变量应该改变,而不是让你不加考虑地这样做。

理解不可变性、可变性和遮蔽之间的区别是掌握 Rust 的所有权模型并编写干净、高效且无错误代码的关键。

  • 原文链接: medium.com/@estheraladio...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
estheraladioche569
estheraladioche569
江湖只有他的大名,没有他的介绍。