走进Rust:常量、变量、可变性、Shadowing

Rust大约 1321 字

常量

常量的值不可以修改。

示例:定义名称为CONST_VAR,类型为u8,值为255的常量。

fn shadowing() {
    // 常量
    const CONST_VAR: u8 = 255;
    println!("CONST VAR={}", CONST_VAR);
}

变量

变量是默认不可改变的。

示例:定义名称为x,值为5的变量。

fn main() {
    let x = 5;
    println!("x={}", x);
    // x = 10;
}

mut

使用mut关键字可以修改变量的值。

示例:定义名称为y,值为10,并标记为mut的变量,再修改为20

fn main() {
    let mut y = 10;
    println!("y1={}", y);
    y = 20;
    println!("y2={}", y);
}

Shadowing

英文文档中以Shadowing来命名这个特性,翻译为遮蔽隐藏重影等。通过使用相同变量的名称并使用let关键字来复用变量。变量的值可以在下一次的表达式中使用,或者直接覆盖。

Shadowingmut有区别,使用let关键字后,如果不经意间重复赋值时会在编译时期抛出异常。

示例:定义名称为z,值为20的变量,再此基础上再将z的值累加5,并再次使用let标记变量z,此时得到25,再以此基础累加5let标记变量,最后等到最终值30

// z = 30
fn main() {
    let z = 20;
    let z = z + 5;
    let z = z + 5;
    println!("z={}", z);
}

还有一个和mut的区别是,如果使用了let关键字,那么系统会再次创建一个新的变量。我们也可以改变该变量的类型,只是重复使用了这个变量名称而已。这样做可以避免space_strspace_len多个变量名的情况。

示例:定义spaces为九个空格,此时的spaces为字符串类型。然后获取spaces的长度并用let标记spaces,此时spaces的类型是整数类型。

fn main() {
    let spaces = "           ";
    println!("space1={}", spaces);
    let spaces = spaces.len();
    println!("space2={}", spaces);
}

如果使用mut来改变类型值,将得到mismatched types异常。

let mut spaces = "   ";
spaces = spaces.len();

//异常信息
error[E0308]: mismatched types
  --> src\main.rs:25:14
   |
25 |     spaces = spaces.len();
   |              ^^^^^^^^^^^^ expected `&str`, found `usize`
阅读 245 · 发布于 2020-06-29

————        END        ————

扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看换一批