美文网首页
1# 变量、可变性变量、常量、隐藏(Shadowing)

1# 变量、可变性变量、常量、隐藏(Shadowing)

作者: IamaStupid | 来源:发表于2022-02-21 15:10 被阅读0次

变量

变量默认是不可改变的(immutable)。
如果你尝试给一个已经定义好的变量重新赋值,那么就会报错。

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

error[E0384]: cannot assign twice to immutable variable `x`

可变性变量

变量只是默认不可变;可以在变量名之前加 mut 来使其可变。
但是可变性变量重新赋值不能改变其本身的类型。

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

The value of x is: 5
The value of x is: 6

使用大型数据结构时,适当地使用可变变量,可能比复制和返回新分配的实例更快。对于较小的数据结构,总是创建新实例,采用更偏向函数式的编程风格,可能会使代码更易理解,为可读性而牺牲性能或许是值得的。

常量

类似于不可变变量,常量(constants) 是绑定到一个名称的不允许改变的值,不过常量与变量还是有一些区别。
首先,不允许对常量使用 mut。常量不光默认不能变,它总是不能变。

const THREE_HOURS_IN_SECONDS: u32 = 60 * 60 * 3;

[隐藏(Shadowing)

fn main() {
    let x = 5;

    let x = x + 1;

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

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

The value of x in the inner scope1 is: 12
The value of x in the inner scope1 is: abc
The value of x is: 6

这段代码在JavaScript里面是错误的,但是在rust里面是正确的。
我们可以定义一个与之前变量同名的新变量。Rustacean 们称之为第一个变量被第二个隐藏 了,这意味着程序使用这个变量时会看到第二个值。可以用相同变量名称来隐藏一个变量,以及重复使用 let 关键字来多次隐藏。
而且隐藏的时候,当再次使用 let 时,实际上创建了一个新变量,我们可以改变值的类型,并且复用这个名字。这在可变性变量里面是不允许的,因为可变性变量是赋值,而隐藏是重新创建了一个同名的新变量。

相关文章

  • 1# 变量、可变性变量、常量、隐藏(Shadowing)

    变量 变量默认是不可改变的(immutable)。如果你尝试给一个已经定义好的变量重新赋值,那么就会报错。 可变性...

  • rust学习总结-2

    声明变量 let 可变性 默认不可变mut 修饰可变 变量遮蔽(shadowing) Rust 允许声明相同的变量...

  • Swift3.0+ 学习 (一)

    变量与常量 任何Swift中的变量要么是不变的,要么是可变的。变量和常量仅仅是用来秒回持有的值的可变性,或是不可变...

  • 萍萍的JavaScript教程 其一 量

    在javascript中存在两种量,变量与常量,其唯一的区别是在声明后的可变性。常量声明后不可改变,变量声明后可以...

  • Rush 入门 - 变量

    变量 定义不可变 可变 隐藏性 常量

  • swift3.0 字符串基础

    //字符串的基础用法 String//swift中字符串的可变性仅通过变量还是常量来决定的,变量定义的字符串即可变...

  • Rust 常量、变量与可变性

    常量是用const来定义 变量是用let来定义 在变量中又分为不可变变量跟可变变量,区别如下 隐藏 -----修改...

  • Swift 2.0 学习笔记 1_基础部分

    //: 基础部分 //: 常量和变量 //: 声明常量和变量 // let: 常量 var: 变量 let max...

  • python中的常量与变量

    变量 定义变量 删除变量 变量连续赋值 变量交互赋值 常量 不好意思, 没有常量

  • swift语法--01常量和变量

    swift语法--常量和变量 常量&变量 let 常量: 常量的值一旦设定就不能改变 var 变量: 变量的值可以...

网友评论

      本文标题:1# 变量、可变性变量、常量、隐藏(Shadowing)

      本文链接:https://www.haomeiwen.com/subject/cvhilrtx.html