Skip to content

函数

在很多语言中函数都是非常常见的存在。在Rust中mian函数是很多程序的入口,fn关键字用来声明函数。Rust中的函数诸如fn function_name(){}的形式,()可以接收参数,{}告诉编译器函数从哪里开始和结束。Rust函数采用 “蛇形命名法”,即全部小写单词,单词之间使用英文下划线_连接。

一个函数声明的示例:

rust
fn main(){
    println!("Hello, world!");
    another_function();
}

fn another_function(){
   println!("another_function");
}

main 函数中的代码会按顺序执行。首先,打印 “Hello, world!” 信息,然后调用 another_function 函数并打印它的信息。

具有参数的函数

函数在声明时可以指定参数,参数的数量可以是多个,多个参数之间使用,分隔。此外每个参数都必须标注类型,具体因为这样可以告诉编译器你的意图而不需编译器在其他代码部分使用到参数时不明确。

一个具有参数的函数声明的示例:

rust
fn main (){
    plus(5);
   
}
fn plus(num:i32){
     println!("num's value is {}",num); // 5
}

具有返回值的函数

函数可以向调用它的表达式返回值。返回值的类型需要在声明函数时就进行标志,在(){}之间使用 -> type声明,在函数中,使用 return 关键字+ 指定值,可从函数中提前返回;但大部分函数隐式的返回最后的表达式所计算的值。

一个具有返回值的函数声明的示例:

rust
fn main (){
   let x = plus(5);
   println!("x's value is {}",x); // 15
}
fn plus(num:i32) -> i32{
     num + 10
    //or return num + 10
}

语句和表达式

函数体由一系列语句构成,可选地以表达式结尾。语句(statement)是执行一些操作但不返回值的指令。表达式(expression)计算并产生一个值。

1. 语句

语句不返回值,因此语句不能赋值给变量,函数本身也是一种语句,但函数可以通过返回值赋值给变量。

rust
fn mian(){
    let a = (let y = 6);//panic
    
    //当plus函数有返回值时可行
    let x = plus1(5);
    
    //当函数没有返回值时,隐式地返回单元类型unit type `()`
    let y = plus2(5);
    let z = plus3(5);
}

fn plus1(num:i32){
   num + 1
}

fn plus2(num:i32){
    
}

fn plus3(num:i32){
   println!("hello,world")
}

2. 表达式

表达式计算并返回一个值。表达式可以同样可以作为语句的结束,如函数本身就是语句,可以以表达式结尾来返回值。

rust
fn mian(){
    let x = {
        let a = 10;
        a + 1
    };////该表达式以语句结尾,语句计算并返回值,然后赋值给x
    
    let z = plus(5);
}

fn plus2(num:i32){
   num + 1 //该语句计算并返回值
}