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

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值