16 函数的定义与调用

在上一篇文章中,我们了解了 Rust 的控制流与模式匹配。在这篇文章中,我们将深入探讨 Rust 中的函数定义与调用。函数是程序设计的基本构件之一,它们使我们能够将任务分解为可重用的组件。

函数的定义

在 Rust 中,定义一个函数使用 fn 关键字。基本的函数定义格式如下:

1
2
3
fn 函数名(参数: 参数类型) -> 返回类型 {
// 函数体
}
  • 函数名:指的是函数的名称。
  • 参数:指定传入函数的数据,可以有多个参数,每个参数后面都有其类型。
  • 返回类型:若函数有返回值,需要通过 -> 关键字指定返回值的类型。

示例:简单的函数定义

让我们来看看一个简单的函数定义的例子,该函数计算两个整数的和:

1
2
3
fn add(a: i32, b: i32) -> i32 {
a + b // 在 Rust 中,最后一行表达式的值就是返回值
}

这里我们定义了一个名为 add 的函数,它接受两个 i32 类型的参数 ab,并返回它们的和。

函数的调用

定义了函数后,我们可以在程序中调用它。函数调用的基本语法如下:

1
函数名(参数1, 参数2);

示例:函数调用

我们可以通过调用上面的 add 函数来计算两个数的和:

1
2
3
4
fn main() {
let result = add(5, 7); // 这里调用 add 函数
println!("5 + 7 = {}", result); // 输出结果
}

在这个例子中,我们在 main 函数中调用了 add 函数,并将返回值赋给变量 result,随后使用 println! 宏输出结果。

多参数的函数

函数可以接受多个参数。假设我们想定义一个计算矩形面积的函数,它接收两个参数,分别是长度和宽度:

1
2
3
4
5
6
7
8
fn rectangle_area(length: f64, width: f64) -> f64 {
length * width
}

fn main() {
let area = rectangle_area(10.0, 5.0);
println!("矩形面积为: {}", area);
}

在这个例子中,rectangle_area 函数接收两个 f64 类型的参数,并返回它们的乘积,表示矩形的面积。

可变参数的函数

Rust 中的函数参数是不可变的,但我们可以通过传递 可变引用 来实现可变性。此外,Rust 提供了将参数列表作为切片传入的能力。这种情况下,我们可以定义一个接收任意数量参数的函数,例如计算多个数的和:

1
2
3
4
5
6
7
8
9
10
11
12
13
fn sum(numbers: &[i32]) -> i32 {
let mut total = 0;
for &num in numbers {
total += num;
}
total
}

fn main() {
let nums = vec![1, 2, 3, 4, 5];
let total = sum(&nums); // 传递切片
println!("总和: {}", total);
}

在上面的例子中,sum 函数接受一个 i32 类型的切片,并计算其和。我们通过 & 符号传递 vec 的引用。

小结

本篇文章介绍了 Rust 中函数的定义与调用,包括简单的函数、多个参数的函数以及接受可变参数的函数。理解函数如何定义和如何调用是深入学习 Rust 的重要基础。在接下来的文章中,我们将会讨论函数的参数与返回值,这将帮助我们更好地理解函数的使用细节。

希望你能在接下来的学习中继续保持对 Rust 的热情与探索精神!

16 函数的定义与调用

https://zglg.work/rust-lang-zero/16/

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论