在 Rust 中,函数是代码的基本构建块,用于封装可重用的逻辑。每个 Rust 程序都至少包含一个 main
函数,它是程序的入口点。本文将详细介绍如何定义和调用函数,包括参数传递、返回值等关键概念。
函数的基本定义
使用 fn 关键字来定义一个函数,后跟函数名、参数列表和返回类型。函数体用花括号 {}
包裹。例如,定义一个简单的函数来打印问候语:
fn greet() {
println!("Hello, Rust!");
}
在这个例子中,greet 函数没有参数和返回值,它只是执行一个打印操作。要调用这个函数,只需在代码中写出函数名加括号:
fn main() {
greet(); // 调用 greet 函数
}
注意:Rust 中的函数名通常使用蛇形命名法(snake_case),例如
calculate_sum。
参数与返回值
函数可以接受参数并返回值。参数在函数名后的括号内声明,每个参数需要指定类型。返回值类型在参数列表后使用 -> 符号指定。例如,定义一个函数来计算两个整数的和:
fn add(x: i32, y: i32) -> i32 {
x + y // 在 Rust 中,最后一个表达式自动作为返回值,无需 return 关键字
}
你也可以使用return关键字返回值:
fn add(x: i32, y: i32) -> i32 {
return x + y; // 使用 return 返回
}
调用这个函数时,需要传递两个整数参数:
fn main() {
let result = add(5, 3);
println!("Sum: {}", result); // 输出: Sum: 8
}
如果函数没有返回值,可以省略 -> 部分,或者指定返回类型为 ()(单元类型)。例如:
fn print_message(msg: &str) {
println!("{}", msg);
}
函数嵌套
函数可以在其他函数内部定义,但内部函数的作用域仅限于外层函数。例如:
fn outer() {
fn inner() {
println!("Inner function");
}
inner(); // 只能在 outer 函数内调用
}
注意:避免在函数中定义过多嵌套函数,这可能导致代码难以维护。通常建议将逻辑拆分为独立的函数。