(二)Rust函数

本文最后更新于 2024年6月24日 下午

函数在Rust中非常常见,在上一节示例中,你已经看到了Rust中程序入口函数main函数。同时你应该也发现了关键字fn可以用来声明函数。

Rust代码中使用蛇形命名法来对函数和变量进行命名。下面是一个例子:

1
2
3
4
5
6
7
8
9
fn main() {
println!("Hello, world!");

another_function();
}

fn another_function() {
println!("Another function.");
}

输入fn后跟函数名和一对小括号,同时使用花括号标识函数的开始和结束,就可以声明一个函数。可以通过函数名加小括号的方式在程序中对函数进行调用。和C语言不同的是,Rust不要求函数的声明在调用之前。

函数参数

Rust函数可以携带参数,和其余静态类型语言一样,需要指定参数的数据类型,下面是一个例子:

1
2
3
4
5
6
7
fn main() {
another_function(5);
}

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

函数another_function有一个名字为x类型为i32的参数。传递数字5进入该函数,println!宏把花括号替换为5,将结果打印在控制台。

如果需要传递多个参数,可以通过逗号将多个参数分割开,下面是一个例子:

1
2
3
4
5
6
7
fn main() {
print_labeled_measurement(5, 'h');
}

fn print_labeled_measurement(value: i32, unit_label: char) {
println!("The measurement is: {value}{unit_label}");
}

声明和表达式

声明是执行一系列动作,但不返回值的指令。

表达式是最终得到结果值的指令。下面是一个例子:

1
2
3
4
5
6
7
8
9
10
fn main() {
let x = 1; // 这是一个声明

let y = {
let x = 3;
x+1
};// 花括号中是一个表达式

println!("The value of y is:{y}");
}

这里需要注意的是:在Rust中表达式的最后一行如果没有分号,会将其作为表达式的返回值返回。和C语言不同的是let x=3并不会返回3这个值,因此let x=(let y=10);编译无法通过。

带有返回值的函数

函数可以携带返回值,但是需要在函数小括号后使用箭头指定返回类型。下面是一个例子:

1
2
3
4
5
6
7
8
9
fn five() -> i32 {
5
}

fn main() {
let x = five();

println!("The value of x is: {x}");
}

定义了一个函数名为five的函数,函数的返回值为i32类型,没有参数。在花括号内只有一行并且没有以分号结尾,因此函数隐式返回了5作为该函数的返回值。除此之外我们也可以使用return显式返回,下面是一个例子:

1
2
3
4
5
6
7
8
9
10
11
fn five() -> i32 {
return 5;

6
}

fn main() {
let x = five();

println!("The value of x is: {x}");
}

参考

Rust docs


(二)Rust函数
https://www.happyallday.cn/Rust/RustLang_02_Function/
作者
DevoutPrayer
发布于
2024年6月24日
更新于
2024年6月24日
许可协议