区块链 区块链技术 比特币公众号手机端

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

liumuhui 2个月前 (02-16) 阅读数 127 #区块链

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! 宏会直接终止程序运行。

版权声明

本文仅代表作者观点,不代表区块链技术网立场。
本文系作者授权本站发表,未经许可,不得转载。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门