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";
参考
上一篇: 静态库与动态库
下一篇: 2018 前端面试题整理
推荐阅读