Rust 基础入门 —— 语句与表达式

语句与表达式

这一节,我们接触的是rust中的有一个基本类型 我将其称之为 —— 逻辑结构,这个是我自己命名的,但我觉得很贴切。
我们只需要记住一个有;结尾的逻辑结构就是语句。 没有的就是表达式。
而我所谓的逻辑结构就是 他包含了变量,操作,可能还要获取结果。的几部分就是逻辑结构。

举例:

fn main() {
    let a = 8;
    let b: Vec<f64> = Vec::new();
    let (a, c) = ("hi", false);
}

以上都是语句, 即 他们都完成了一个具体的操作, 并且没有返回值

而以下内容 则是 表达式:

fn main() {
    let y = {
        let x = 3; //语句
        x + 1 // 表达式
    }; // 语句

    println!("The value of y is: {}", y);
    let z = (let r = 0); // 外层 是语句, 但是右值 是 赋值语句, 因此外层找不到返回值,会报错。
}

总结一下

  1. 表达式是要有返回值的,没有分号的。
  2. 表达式添加了分号就变成了语句
  3. let 作为赋值语句,可以直接理解为语句。
  4. rust 中是可以通过表达式定义 let声明的左值的,因为实质上这是一个变量绑定,你可以理解为指向函数的指针,但是这个地方会在编译时,将对应函数内容计算出来给左值,(有点像编译时lambda是吧,虽然lambda是运行时的还可以捕获局部参数。但这种写作风格雀氏形似)。
  5. 表达式如果没有显示的返回内容如 :let z = {let r = 1;r+=1;r} 或者let z = {let r = 1;r+=1;return r}而是 let z = {let r = 1}那么这是z 实际 赋值单元类型。
    1. 即:表达式如果不返回任何值,会隐式地返回一个 ()
      来段更难的代码:
fn main() {
    assert_eq!(ret_unit_type(), ())
}

fn ret_unit_type() {
    let x = 1;
    // if 语句块也是一个表达式,因此可以用于赋值,也可以直接返回
    // 类似三元运算符,在Rust里我们可以这样写
    let y = if x % 2 == 1 {
        "odd"
    } else {
        "even"
    };
    // 或者写成一行
    let z = if x % 2 == 1 { "odd" } else { "even" };
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值