侧边栏壁纸
博主头像
我的学习心得 博主等级

行动起来,活在当下

  • 累计撰写 223 篇文章
  • 累计创建 60 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

Rust-N03:语句与表达式

Administrator
2024-10-05 / 0 评论 / 0 点赞 / 255 阅读 / 0 字
fn main() {
    print_labeled_measurement(5, 'h');
}

fn print_labeled_measurement(value: i32, unit_label: char) {
    println!("The measurement is: {value}{unit_label}");
}

函数定义时的参数叫做 形参(Parameters),函数调用时传入的实际参数叫做 实参(Arguments),日常交流中形参和实参不做太多区分,统一叫做 参数。函数参数是 函数签名 的重要组成部分。

不同于大多数语言基于 语句(Statements),Rust 的函数实现是基于 表达式(Expressions)的。

执行操作但不返回值的叫语句,执行计算并且返回值的叫表达式。

在 C/Ruby/Python 中赋值操作更像是表达式,它会返回所赋的值,所以允许连续赋值的写法:x = y = 1;然而在 Rust 中赋值操作是语句,不允许连续赋值。

简单表达式很直观:

let x = 1;
let x = 1 + 2;

上述例子中,let x = 1; 整体以分号结尾,是一个语句,没有返回值。1 是一个表达式,不是以分号结尾,返回值是 1

let x = 1 + 2; 整体是一个语句,以分号结尾。1 + 2 是一个表达式,不以分号结尾,返回值是 3

{} 表达式稍微复杂一点:

let x = {
    let a = 1;
    a + 1
};

上述例子中,{ ... } 是一个表达式,它的结尾 a + 1 是一个表达式,它的返回值同时也是 { ... } 表达式的返回值,所以最终变量 x 获得的就是 2

let x = {
    let a = 1;
    a + 1;
};

上述例子中,{ ... } 是一个表达式,它的结尾 a+1; 是一个语句,故 { ... } 表达式没有显式的返回值,那么其返回的就是单元元组(()),所以最终变量 x 获得的就是单元单组。

不管形式如何,Rust 中表达式结尾的返回值没有分号,否则它就是一个语句。

除此之外,函数调用也是一个表达式,因为它总有返回值。

等号右边总是一个表达式。

0

评论区