首页 > rust入门疑问001,变量不可变,let与let mut

rust入门疑问001,变量不可变,let与let mut

this is called a ‘variable’, but Rust’s variable bindings have a few tricks up their sleeves.

美其名曰,bind,不知道这个设计的背后是什么情况,2点搞不明白

1,用let这个关键字,真是很特别哦,为什么不用var,知乎上有说,是因为let是函数式编程里绑定的常用关键字,rust设计的时候,为什么不尽量采用类c的语法,弄个let,

2,究竟是变量用的多,还是不可变的量用的多,为什么不用let绑定变量,let nmut,绑定不可变的量?


因为Rust中很重要的一个概念是“模式解构” pattern destructure. 其中let/match 等语句都能引入模式解构。mut 关键字是模式的一部分,而不能将"let mut"视为一个组合。

let (mut x, y) = (1, 2); // 这是一个模式解构,x是mut绑定,y是不可变绑定。x绑定到了一个tuple的第一个元素
let (ref x, y) = (1, 2); // 这也是一个模式解构

更复杂的例子:

fn main() {
    let mut o : Option<i32> = Some(1); // o 是变量绑定,看起来与普通变量声明没什么区别
    match o {
        Some(ref mut x) => *x = 2,  // 这里x也是变量绑定,它是个指针,绑定到了Option内部数据
        None => (),
    };
    println!("{:?}", o);
}

1.为什么用let而不用var,相当于说,我喜欢苹果,为什么你喜欢香蕉。
2.官方文档有说明。默认变量不可变更安全。


let很特别吗,js都有好吧,看ES6

变量默认不可变,可以让你的程序少很多Bug

【热门文章】
【热门文章】