rust 語法和語義 02 函數

rust 語法和語義 02 函數

函數 functions

概述

fn func_name(var1 : u32, var2 : u32) -> u32 
{
    let return_val : u32 = var1 + var2;
    return_val // return without ';'
}

函數聲明

使用關鍵字 fn 聲明一個函數。

fn func_name() {...}

函數參數

使用逗號 , 分割參數。且必須爲參數 聲明類型 type annotations

fn func_name(var1 : u32, var2 : i32) {...}

函數返回

rust函數只能返回 1 個值。
rust是基於 表達式 的語言。

在函數聲明的一個箭頭 -> 後面,聲明返回值類型 type annotations
在函數中,返回的表達式不加分號semicolon ';'

fn add_one(x: u32) -> u32 
{
    x + 1
}

提早返回 early returns

使用關鍵字 return

fn foo(x: u32, y: u32) -> u32
{
    return x;   // 提早返回 return + ;
    x + 1       // never run this code
}

可以在最後返回時也使用return語句,但這被認爲是一種糟糕的風格。請記住:

rust是基於 表達式 的語言。

發散函數 diverging functions

發散函數並不返回。返回類型 ! 代表 發散

fn diverges() -> ! {
    panic!("this function nerver returns!");
}

發散函數可以被用作任何類型。

let x: i32 = diverges()
let x: string = diverges()

函數指針

指向函數的指針(變量綁定)。

let pFunc: fn(u32) -> u32;

參考

發佈了59 篇原創文章 · 獲贊 20 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章