侧边栏壁纸
  • 累计撰写 218 篇文章
  • 累计创建 59 个标签
  • 累计收到 5 条评论

Rust-N03:语句与表达式

barwe
2024-10-05 / 0 评论 / 0 点赞 / 158 阅读 / 814 字
温馨提示:
本文最后更新于 2024-10-05,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
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

评论区