Rust中常量为什么用let不用const,变量用let mut不用var

 我来答
周启萌
2016-08-04 · TA获得超过1152个赞
知道大有可为答主
回答量:1441
采纳率:86%
帮助的人:1717万
展开全部
记住 let 是函数式语言中的绑定(binding),而不是赋值(assignment)

let 这么强大的东西为什么不用呢,const,var 能玩匹配吗
假设一个函数或方法返回一个 tuple,需要把它解析出来

fn f() -> (&str, i32) {}
let (a, b) = f()
let (mut a, b) = f()
let (_, b) = f()
let (ref a, b) = f()

如果返回的是一个结构体,可以这么玩

struct Point {
x: f64,
y: f64,
}
fn f() -> Point {}
let Point{x: a, y:b} = f();
let Point{x: mut c, y:_} = f();
let Point{x: _, y: ref d} = f();

如果用 const, var 应该怎么写上面这些呢

const a;
var b;
Point p = f(); //Tuple t = f();
a = p.x; // a = p.0;
b = p.y; // b = p.1;

另外还有 if let 和 while let 这样的东西,玩的也是模式匹配,直接把 Some 里面非空的东西抠出来使用,Simple, Clear, Powerful!

if let Some(x) = option {
foo(x);
} else {
bar();
}

while let Some(x) = option {
println!("{}", x);
}

另外 const 有必要么,写过 C++ 或 Java 大型项目应该体会到到处是 const/finally,之前有人统计过 Rust 项目里 let mut 与单 mut 的比例(即mut和const的比例),其中单 let 是 let mut 的3倍,与其到处写 const 防止被修改,为什么不默认就是不可变 呢,这样可以省去许多击键数
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式