变量绑定值与返回值给变量的区别及Rust语法疑问
变量绑定值与赋值返回值的区别
核心概念差异
变量绑定(以Rust的
let为例):let y = 6是一个声明语句,它的唯一作用是在当前作用域创建变量y,并将值6与y建立绑定关系。这个操作没有任何返回值——它不产生可供其他变量绑定或使用的结果,只是完成“定义变量并关联值”这个动作。这就是你编写let x = (let y = 6);会报错的原因:Rust找不到任何能绑定给x的内容。赋值返回值(以C、Ruby为例):
在这些语言中,赋值操作是一个表达式,而非单纯的语句。执行y = 6时,除了完成把6赋值给y的动作,还会将被赋的值6作为整个表达式的返回结果。这就支持链式赋值写法:x = y = 6等价于x = (y = 6),先执行y=6返回6,再把这个返回值赋值给x,最终x和y都被设为6。
额外说明
Rust刻意区分语句和表达式,禁止let绑定返回值,很大程度上是为了避免常见的编程错误。比如在C语言中,不小心把条件判断的==写成赋值=,if (x = 5)会被当成合法代码(赋值后返回5,被视为布尔真),从而引发逻辑bug;但在Rust中,这类写法会直接触发编译错误,能提前拦截问题。
内容的提问来源于stack exchange,提问作者Resfe
相关产品推荐
相关产品推荐

