欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

rust 语法和语义 01 变量绑定

程序员文章站 2022-06-09 17:30:47
...

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

参考

相关标签: rust binding