Rust-04-函数
函数
说明
在Rust中,函数是组织代码和实现功能模块化的重要方式。函数可以接收参数并可能返回一个值。下面将详细探讨Rust语言中的函数:
函数定义
基本形式:Rust的函数定义以fn关键字开始,后跟函数名、参数列表和函数体。函数体的开始和结束由花括号{}标记。函数名通常采用小写字母和下划线的组合。
参数声明:如果函数需要参数,必须在括号内声明参数的名称和类型。例如,another_function(x: i32, y: i32)中x和y是参数名称,i32是它们的类型。
返回值:Rust函数可以声明返回值类型,使用->符号后跟返回类型。如果没有明确声明返回类型,则函数为“纯过程”,不允许产生返回值。
函数体
语句与表达式:Rust函数体由一系列语句组成,这些语句执行某些操作且没有返回值。而表达式则是有计算步骤且有返回值的。
块表达式:可以在花括号{}内编写复杂的表达式,这种表达式块称为函数体表达式。块中的最后一个表达式的结果成为整个块表达式的值。
嵌套函数:Rust支持在函数内部定义另一个函数,这称为嵌套函数定义。
函数调用
无参数调用:没有参数的函数可以直接通过函数名加上括号()进行调用。
带参数调用:如果函数定义时包含了参数,那么在调用函数时需要提供相应的参数值。
返回值接收:当函数有返回值时,可以直接使用该返回值,或者选择忽略它。
命名风格
小写与下划线:Rust的函数命名推荐使用小写字母和下划线的风格,这有助于提高代码的可读性。
编程范式
函数式编程:Rust支持多种编程范式,但更倾向于函数式编程,这意味着函数在Rust中被视为"一等公民",可以作为数据传递。
主入口函数:每个Rust程序都有一个名为main的函数,它是程序的入口点。
特殊函数
main函数:Rust程序必须有一个名为main的函数作为程序的入口点。这个函数的返回类型是(),代表一个空的元组。
此外,在深入了解Rust函数的基础上,还需注意以下几点:
参数默认值:Rust不支持为函数参数设置默认值,这是与其他一些编程语言不同的地方。
可变性与所有权:Rust的函数参数默认是不可变的,除非显式地标记为可变。同时,Rust的所有权模型意味着你需要注意参数和返回值的所有权转移。
泛型函数:Rust支持泛型编程,允许你创建可以处理不同类型的函数。
总的来说,Rust语言中的函数是组织代码、实现功能模块化的强大工具。它们可以通过参数接收输入,并通过返回值提供输出。Rust的函数可以嵌套定义,支持表达式作为函数体,并且拥有严格的参数和返回值类型系统。了解Rust函数的这些特性对于编写安全、高效的Rust代码至关重要。
编程
fn main() {
void(); // 无参
parm(10,"hello"); // 有参
let pow = retp(10); // 有返回值
println!("{pow}");
println!("{}", ret()) // 表达式
}
fn void() {
println!("void");
}
fn parm(x:i32,y:&str) {
println!("{x},{y}");
}
fn retp(i:i32) -> i32 {
return i * i;
}
fn ret() -> &'static str {
"hello world"
// 这里只能是表达式,不能是语句,如果写成 "hello world;"会产生错误
}