【Rust 基础入门】(03) | 语句、表达式与函数

  • 0xE
  • 更新于 4天前
  • 阅读 505

本篇文章介绍了 Rust 语言中的语句与表达式的区别、代码块表达式、单元类型 ()、if 表达式,以及函数的基本用法,包括带参数函数、无返回值函数和发散函数。

1. 语句与表达式

在 Rust 中,语句表达式是两个非常重要的概念,理解它们有助于写出更清晰的代码。

  • 语句:执行某些操作但不返回值的代码。语句以分号 ; 结尾。比如:

    let a = 10; // 这是一个语句,执行赋值操作但不返回值

    你可以把语句想象成厨师在厨房里的动作,比如切菜、煮水,这些动作本身不会直接产生一道菜。

  • 表达式:计算并返回一个值的代码。表达式没有分号。比如:

    let b = {
      let x = 5;
      x + 1 // 这是一个表达式,返回 x + 1 的值
    };

    表达式就像是厨师做好的菜,比如切好的蔬菜、煮好的汤,它们是最终的产品,可以被后续使用。

小技巧:大部分情况下,区分语句和表达式的一个简单方法是看有没有分号。有分号的是语句,没有分号的是表达式。

2. 代码块表达式

在 Rust 中,代码块 {} 也可以是一个表达式,它会返回最后一个表达式的值。比如:

let y = {
    let x = 3;
    x + 1 // 这个代码块返回 x + 1 的值
};
println!("y is {}", y); // 输出 y is 4

注意:如果代码块的最后一行加了分号,它就变成了语句,不会返回值。比如:

let z = {
    let x = 3;
    x + 1; // 加了分号,变成了语句,不会返回值
};
println!("z is {:?}", z); // 输出 z is (),因为 z 是单元类型 ()

3. 单元类型 ()

Rust 中的单元类型 () 类似于其他语言中的 void,表示没有返回值。比如:

fn do_nothing() {
    println!("Doing nothing!"); // 这个函数没有返回值,默认返回 ()
}

Rust 是一门静态类型语言,每个函数都必须有明确的返回类型。当函数没有返回值时,Rust 使用 () 来表示“没有返回值”。这通常用于打印消息、写入文件等不需要返回值的操作。

4. if 表达式

在 Rust 中,if 语句也可以作为表达式使用,类似于其他语言中的三元运算符。比如:

let x = 5;
let result = if x > 3 {
    "greater than 3"
} else {
    "less than or equal to 3"
};
println!("result is {}", result); // 输出 result is greater than 3

5. 函数

函数是 Rust 中的基本构建块,用于执行特定任务。Rust 中的函数命名遵循 snake_case 风格。

  • 带参数的函数

    fn add(a: i32, b: i32) -> i32 {
      a + b // 返回 a + b 的值
    }

    注意:函数的参数需要显式指定类型,这有助于 Rust 的类型安全性。

  • 无返回值的函数

    fn greet() {
      println!("Hello, world!"); // 这个函数没有返回值,默认返回 ()
    }
  • 发散函数: 发散函数是指永远不会返回的函数,通常用于处理错误或不可恢复的情况。它们用 ! 类型来标注。比如:

    fn panic_function() -> ! {
      panic!("This function will never return!"); // 这个函数会直接终止程序
    }

    发散函数通常用于处理不可恢复的错误,比如 panic! 宏会直接终止程序运行。

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
0xE
0xE
0x59f6...a17e
17年进入币圈,Web3 开发者。刨根问底探链上真相,品味坎坷悟 Web3 人生。工作机会可加v:__0xE__