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;