rust 语法和语义 01 变量绑定

rust 语法和语义 01 变量绑定

变量绑定 variable-bindings

概述

fn foobar() {
    let mut x : u32 = 5;
    let x = "I'm shadowed to string";
}

-------------------------------------

scope
between { and }

keyword  mutability  patterns  type annotations  = initializing bindings
let      mut         x         : u32             = 5;

shadowing
let x = "I shadowed to string";

-------------------------------------

关键字 let

关键字 let 声明一个绑定 binding

let x = 5;

模式 patterns

let 语句等式左面是一个模式 pattern 。他可以是变量 variable 也可以是元组 tuple 等。

let (x, y) = (1, 2);

类型注解 type annotations

: 类型名 明确指出 模式类型。可以如下方式朗读:

“x 被绑定为 i32 类型,他的值是 5”

let x : i32 = 5;
let (x, y) : (u32, u32) = (1, 2);

可变性 mutability

绑定默认是不可变 immutable 的。使用关键字 mut 使一个绑定可变。

let mut x = 5;

mint: 类似于c中的关键字 const
在c中,很多函数的参数声明上都会写上 const 防止原始数据被意外修改而破坏。

初始化绑定 initializing bindings

绑定 要求在使用它之前必须 初始化

let x = 5;

作用域 scope

作用域:变量绑定被限制在他们被定义的块中存在。一个块是被 {} 包围的语句集合。

fn foo() {
    let x : i32 = 1;
    {
        let y : i32 = 2;
        println!("y is in this scope: {}, {}", x, y); 
    }
    // error, y is out of scope 
    println!("y isn't in this scope: {}, {}", x, y);
}

隐藏 shadowing

隐藏:一个 后声明 并位于 同一作用域scope相同名字的绑定 将会覆盖前一个绑定。

// mutable
let mut x : i32 = 1;
x = 7;

// shadowing
let y = 4;
let y = "I'm shadowed to string";

参考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章