简述

Rust是一门基于 Expression-based 语言。
注意和语句的区别:

  • 语句:Statements 是执行操作但是不返回值的指令。
  • 表达式:Expression 是计算并产生一个值。

let 关键字是 创建变量绑定一个值。注意,它是语句,语句不产生值

  1. fn main(){
  2. let y = 0; // 这一整行是一个语句。
  3. }

在 C ,Python,JavaScript中,都支持 x=y=z 的写法;
但 Rust 中不支持:let x = ( let y = 6)的写法。
因为 let y = 6是一个语句,语句不返回值

表达式会计算出一些值,并且 大部分 Rust 代码是由表达式组成
比如 5 + 6,一个简单的数学运算,这是表达式并计算出值 11。

赋值绑定语句中,赋值符号右侧的值是一个表达式
语句 let y = 6; 中的 6 是一个表达式,它计算出的值是 6。

函数调用是一个表达式

宏调用是一个表达式

创建新作用域的大括号(代码块),{ } 也是一个表达式
【例】

  1. fn main(){
  2. let x = 5;
  3. let y = {
  4. let x = 3;
  5. x + 1
  6. };
  7. println!("The value of y is :{}",y);
  8. }

其中注意:{ let x = 3; x + 1 }是一个代码块,它的值是 4 。这个值作为 let语句的一部分被绑定到 y 值上。
注意: x+1 结尾没有 分号 。表达式的结尾没有分号。分号是语句的标志。所以表达式末尾别放分号。那么放在大括号外面的分号呢?因为 表达式部分 连同 赋值符号前的部分 共同构成的了一个完整的语句,大括号外面的分号表示这个完整的语句的结束。
如果表达式结尾加上分号,它就变成了语句,而语句不会返回值。时刻谨记!

函数有返回值

函数向调用它的代码返回值。
返回值不命名但要声明返回值的类型。要在箭头 **->** 后 声明返回值类型 。Rust中,函数的返回值就是 return 语句,

Statement