Windows -编程-变量和可变性-阴影

Windows -编程-变量和可变性-阴影

正如您 在第 2 章“比较猜测与秘密数字”部分的猜谜游戏教程中所见,您可以声明一个与前一个变量同名的新变量。Rustaceans 说第一个变量被第二个变量遮蔽,这意味着第二个变量的值是使用该变量时出现的值。我们可以通过使用相同的变量名并重复使用let关键字来隐藏变量,如下所示:诚接Windows驱动开发外包

文件名:src/main.rs

fn main() {

let x = 5;

let x = x + 1;

let x = x * 2;

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

}

该程序首先绑定x到 的值5。然后它x通过重复let x =进行阴影处理,取原始值并相加,1因此 的值为 xthen 6。第三个let语句也是阴影x,将前一个值乘以2给出x最终值12。当我们运行这个程序时,它会输出以下内容:

$ cargo run

Compiling variables v0.1.0 (file:///projects/variables)

Finished dev [unoptimized + debuginfo] target(s) in 0.31s

Running `target/debug/variables`

The value of x is: 12

阴影与将变量标记为 不同mut,因为如果我们不小心尝试在不使用let关键字的情况下重新分配给该变量,我们将收到编译时错误。通过使用let,我们可以对一个值执行一些转换,但在这些转换完成后变量是不可变的。

mut和隐藏之间的另一个区别是,因为当我们let再次使用关键字时,我们有效地创建了一个新变量,所以我们可以更改值的类型但重用相同的名称。例如,假设我们的程序要求用户通过输入空格字符来显示他们想要在某些文本之间有多少空格,但我们真的想将该输入存储为数字:

let spaces = "   ";

let spaces = spaces.len();

这种构造是允许的,因为第一个spaces变量是字符串类型,而第二个spaces变量是一个全新的变量,碰巧与第一个变量同名,是一个数字类型。因此,阴影使我们不必想出不同的名称,例如spaces_str和 spaces_num;相反,我们可以重用更简单的spaces名称。但是,如果我们尝试使用mut它,如下所示,我们将得到一个编译时错误:

let mut spaces = "   ";

spaces = spaces.len();

错误说我们不允许改变变量的类型:

$ cargo run

Compiling variables v0.1.0 (file:///projects/variables)

error[E0308]: mismatched types --> src/main.rs:3:14

|

3 |     spaces = spaces.len();

|              ^^^^^^^^^^^^ expected `&str`, found `usize`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0308`.

error: could not compile `variables`

To learn more, run the command again with --verbose.

既然我们已经探索了变量的工作原理,让我们看看它们可以拥有的更多数据类型

(0)

相关推荐

  • C 程序调试(Dev C++版)

    当 C 语言程序能够正常编译并运行,但可能结果可疑或不对时,即,当程序没有语法错误而可能有逻辑错误时,就需要考虑使用调试 Debug功能来找出程序的 bug. 在调试过程中,可以让程序运行到设置好的断 ...

  • 面试官在“逗”你系列:不借助第三变量交换两个变量值的方案你有几种?

    引言 在我们学习编程之初,就学习过变量的赋值操作,同时也学习了将一个变量的值赋值给另外一个变量.对于交换两个变量的值,很多童鞋都有解决方案.然鹅,对于面试官提出的不借助第三变量来交换两个变量的值,你能 ...

  • Rust中的各种指针

    xtutujs.golang.rust.关注他49 人赞同了该文章Rust 中的指针大体可以分为以下四种:引用 references"胖指针 fat pointers"(该分类存有 ...

  • Rust基础学习笔记(零):复习基本知识

    由于一个学期没有碰Rust,相关知识殆已忘尽.最近各课逐渐停授,余出时间来从基础重温这些知识,也算是对没有写的基础知识的补充.另外这次复习主要参照了Youtube上的Crush Course视频,两个 ...

  • Rust 中的 Closure

    原理 有些语言中没有 closure 和普通函数的区分,但 Rust 有.对 Rust 来说普通函数就是一段代码.而 closure 和 C 类似:每个 closure 会创建一个匿名的struct, ...

  • Windows -编程-变量和可变性

    Windows -编程-变量和可变性 默认情况下变量是不可变的.这是 Rust 为您提供的众多推动之一,您可以利用 Rust 提供的安全性和简单的并发性来编写代码.但是,您仍然可以选择使变量可变.让我 ...

  • Windows -编程-变量和常量之间的差异

    Windows -编程-变量和常量之间的差异 无法更改变量的值可能会让您想起大多数其他语言都有的另一个编程概念:常量.与不可变变量一样,常量是绑定到名称且不允许更改的值,但常量和变量之间存在一些差异. ...

  • Windows -编程-数值运算

    Windows -编程-数值运算 Rust 支持所有数字类型的基本数学运算:加法.减法.乘法.除法和余数.以下代码显示了如何在let语句中使用每一个:诚接Windows驱动开发外包 文件名:src/m ...

  • Windows -编程-数据类型

    Windows -编程-数据类型 Rust 中的每个值都有特定的数据类型,它告诉 Rust 指定了什么样的数据,以便它知道如何处理这些数据.我们将研究两种数据类型子集:标量和复合.诚接Windows驱 ...

  • 【白话Windows编程】第一章 看透Windows之一

    第一篇 看透 Windows"看透Windows"前言终于开始Windows编程了.我们也无可避免地,开始和Windows打交道.记得在<白话C++>里,我们试图用&q ...

  • 学会这两招,PLC编程也可以批量化定义变量-数组、结构

    数组 简单的说,就是多个相同类型数据一定顺序排列的集合,使用一个名字命名,并通过编号的方式对这些数据统一管理. 在PLC编程过程中,我们也经常遇到同类型的变量需要定义,例如10台电机的电流值,如果不使 ...

  • PLC高手编程都会用Slice方式对变量进行寻址

    编程S7-1200可以选择包含所声明变量的特定地址区域,可以访问宽为 1 位.8 位.16 位或 32 位的区域,这种访问类型称之为"片段访问"(Slice access).通过 ...

  • Windows Socket和Linux Socket编程的区别

    SOCKET在原理上应该是一样的,只是不同系统的运行机置有些不同.Socket 编程 windows到Linux代码移植遇到的问题1.一些常用函数的移植http://www.vckbase.com/d ...

  • Windows系统路径变量

    %WINDIR%                 {系统目录 - C:\WINDOWS} %SYSTEMROOT%             {系统目录 - C:\WINDOWS} %SYSTEMDRI ...