Ai摘要
加载中...|
此摘要由AI根据文章内容生成,并经过人工审核,仅用于文章内容的解释与总结

注释

Rust的注释类似Java、C等语言,支持多行注释、单行注释:

rust
// 注释方式1

/* 注释方式2 */

/* 注释方式3
 * 多行注释
 * 多行1
 * 多行2
 */

除了上面这种,Java、C语言中有的注释,Rust还专门针对文档注释,设计了一种注释方式:

rust
/// 方法 add 会将两个输入的 i32 值相加并返回
/// 
/// # 示例 
/// 
/// ``` 
/// let x = add(1, 2); 
/// ``` 

fn add(a: i32, b: i32) -> i32 {
    return a + b;
}

fn main() {
    println!("result = {}",add(100, 200)); // 输出:result = 300
}

通过这种方式添加的注释,会在IDE等工具中,显示在函数的上面,方便查看。也可以通过 cargo doc 功能将文档生成为 Html 文档。

函数

之前的例子已经已经多次使用函数了,这里对 Rust 中函数的使用进行一些总结。

定义函数的关键词是fn,后面跟函数名,参数列表和返回值类型,函数体用{}包裹。Rust 中函数名称的命名风格,是小写字母以下划线分割:

rust
fn 函数名(参数1: 参数类型1, 参数2: 参数类型2, ...) -> 返回值类型 {
    // 函数体
}

fn function_name() {
    // 函数体
}

最常见的 Rust 入口函数 main 函数,就是一个最简单的函数,从 main 函数可以看出,如果没有返回值,可以省略-> ()的部分。

rust
fn main() {
    println!("hello world");
}

fn print0() {
    println!("hello");
}

fn print1() -> () {
    println!("hello");
}

函数体中可以使用return关键词返回值,也可以使用表达式返回值,注意:表达式返回值后边不能加;。如果没有定义返回值,函数体中不能使用return返回值或表达式返回值,可以仅仅使用return关键词来结束函数。

rust
fn add(a: i32, b: i32) -> i32 {
    a + b // 如果后边加分号,会报错
}

fn multi(a: i32, b: i32) -> i32 {
    return a * b // return 返回值,可以加分号,也可以不加
}

fn print() {
    println!("hello");
    return; // 可以使用 return 关键词结束函数,后边的代码不会再运行
    println!("world");
}

在 Rust 中,可以使用 {} 包裹代码块,形成一个独立的作用域,在代码块中定义的变量,只能在代码块中使用,超出代码块,就失效了。代码块可以有返回值,但是只能使用表达式返回值,不能使用return返回值。

rust
fn main() {
    let x = 100;
    {
        let y = 200;
        println!("{}", x + y); // 输出:300
    }

    // 可以使用 let 关键词定义新的变量,来接收代码块的返回值
    let z = {
      let x = 3;
      x + 100 // 函数体表达式,不能使用 return。
    };

    // 这里使用 x 变量,不会报错,而且不会被代码块里面的变量覆盖
    println!("{}", x); // 输出:100

    // 这里使用 y 变量,会报错
    // println!("{}", y);
    
    println!("{}", z); // 输出:103
}

Rust 中函数可以嵌套,即函数中仍然可以定义函数:

rust
fn add(a: i32, b: i32) -> i32 {
    fn inner(c: i32, d: i32) -> i32 {
        c + d
    }
    inner(a, b)
}

fn multi(a: i32, b: i32) -> i32 {
    fn inner(c: i32, d: i32) -> i32 {
        c * d
    }
    inner(a, b)
}

fn main(){
    println!("{}", add(100, 200)); // 输出:300
    println!("{}", multi(100, 200)); // 输出:20000 
}
赞赏博主
评论 隐私政策