手记

【金秋打卡】第7天 Rust 函数

课程章节: 第4章 Rust 流程控制 4-10 函数与方法

课程讲师叶枭

课程内容:

今天学习的内容是 Rust 中的函数

函数

函数,和 if 条件控制,while、loop、for 循环控制,在底层都是使用跳转实现的,所以函数也属于流程控制的一种。可以这样理解,当函数执行时,程序的执行主体就进入了函数内部,当函数执行完毕,则又返还回去,这就是函数的流程控制。

Rust 中使用函数和 Typescript 比较像,需要关注参数的类型返回值的类型, 再就是有一点 Rust 语言的特性,返回值可以是一个表达式。

参数的类型注解和变量是一样的,在参数名为使用冒号 : 指定类型,返回值的类型使用箭头 -> 表示。如果函数没有返回值,则可以省略。

比如一个斐波那契数列函数:

fn fibonacci(n: u64) -> u64 {
    if n < 2 {
        return n;
    }
    return fibonacci(n - 1) + fibonacci(n - 2);
}

fn main() {
    println!("斐波那契数列的第 10 项是:{:?}", fibonacci(10)); // 55
}

前面说过,Rust 是基于表达式的,函数中也能用到这个特性。一般函数都会使用 return 来结束函数的调用和返回值。Rust 中的函数,如果没有 return,默认会将最后一个表达式的值作为函数的返回值,所以上面的斐波那契数列函数可以写成:

fn fibonacci(n: u64) -> u64 {
    if n < 2 {
        n
    } else {
        fibonacci(n - 1) + fibonacci(n - 2)
    }
}

函数没有返回值时,可以省略返回值的类型,或者写成 ()

fn log1(message: &str) {
    println!("{}", message);
}

fn log2(message: &str) -> () {
    println!("{}", message);
}

fn main() {
    let message = "测试";
    log1(message);
    log2(message);
}

课程收获

这节课学习了 Rust 中的函数类型,从程序执行的角度看,它也属于流程控制的一种。但更多时候我们只把函数看作是对一个功能的封装。Rust 具备函数式编程的特性,所以函数是 Rust 中的重中之重。

0人推荐
随时随地看视频
慕课网APP