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";

參考

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