函數(shù)
函數(shù)以fn開(kāi)頭,接著是函數(shù)名,可以定義在任何位置
函數(shù)名后的括號(hào)里是參數(shù),調(diào)用時(shí)只需要函數(shù)名+參數(shù)。
函數(shù)參數(shù)由參數(shù)名:類型組成,類型是必須指定的,多個(gè)參數(shù)用逗號(hào)隔開(kāi),調(diào)用的時(shí)候傳遞實(shí)際參數(shù)。
參數(shù)后的{}中是函數(shù)體,由一系列語(yǔ)句和表達(dá)式組成。結(jié)尾之前都必須是語(yǔ)句,但結(jié)尾可以是語(yǔ)句或表達(dá)式。
Rust的語(yǔ)句和表達(dá)式是有區(qū)別的,語(yǔ)句只有行為沒(méi)有返回值,表達(dá)式有值,語(yǔ)句中可以包含表達(dá)式,表達(dá)式加上分號(hào)就是語(yǔ)句。
表達(dá)式:
8
2+4
x+2
another_function(5, 6)
println!("hello, world")
{ y?+ 1 }
整個(gè)是語(yǔ)句,{}中的是表達(dá)式,{}中第一行是語(yǔ)句,最后一行x+1是表達(dá)式,沒(méi)有分號(hào)。
語(yǔ)句:
fn main() {}
let x = 6;
表達(dá)式;
所以函數(shù)是語(yǔ)句,函數(shù)體是表達(dá)式,同樣符合語(yǔ)句包含表達(dá)式的原則。
函數(shù)返回值用“->類型”定義,返回值是函數(shù)體最后一個(gè)表達(dá)式的值
函數(shù)調(diào)用返回的是表達(dá)式x+1的值,如果改成x+1;,函數(shù)就沒(méi)有返回值,返回的實(shí)際是空元組(),和返回類型就不匹配了。