函数

119 阅读2分钟

概述

  • Rust 的函数与其他编程语言类似,使用 fn 关键字声明。
  • 函数用于执行任务并可返回值。

函数定义

  • 函数由关键字 fn, 函数名,参数列表,返回类型,和函数体组成。

简单函数示例

fn add(i: i32, j: i32) -> i32 {
    i + j
}

函数要点

  • 使用蛇形命名法命名函数,如 add_two()。
  • 函数定义位置灵活,Rust 不限制函数定义的位置。
  • 每个参数都需要标注类型。

函数参数

  • Rust 是强类型语言,每个参数都需要明确类型。

函数参数类型标注示例

fn another_function(x: i32, y: f32) {
    println!("The value of x is: {}", x);
    println!("The value of y is: {}", y);
}

函数返回

  • 函数的返回值可以是最后一条表达式的值,或使用 return 关键字提前返回。

使用表达式返回值示例

fn plus_five(x: i32) -> i32 {
    x + 5
}

使用 return 返回值示例

fn plus_or_minus(x: i32) -> i32 {
    if x > 5 {
        return x - 5;
    }
    x + 5
}

特殊返回类型

  • 无返回值:使用单元类型 () 表示函数没有返回值。
  • 永不返回的发散函数:使用 ! 作为返回类型,表示函数永不返回。

无返回值函数示例

fn report<T: Debug>(item: T) {
    println!("{:?}", item);
}

发散函数示例

fn dead_end() -> ! {
    panic!("你已经到了穷途末路,崩溃吧!");
}

错误示例

  • 如果函数期望返回特定类型但最后一行是语句,将导致错误。

错误示例

fn add(x: u32, y: u32) -> u32 {
    x + y; // 错误:期望返回 u32,却返回 ()
}

总结

  • 函数是 Rust 中执行任务和返回值的基本单元。
  • 函数需要为每个参数明确标注类型。
  • 函数可以返回值,使用表达式或 return 关键字。
  • 特殊返回类型包括无返回值的 () 和永不返回的 !。
  • 理解语句和表达式的区别对 Rust 函数的使用至关重要。