无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

Rust 從入門到精通07-函數(shù)

2022-10-21 21:52 作者:程序員_可樂  | 我要投稿

1、函數(shù)簡介

①、Rust 的函數(shù)使用關(guān)鍵字 fn 開頭,函數(shù)名稱使用snake case規(guī)范風(fēng)格(所有字母小寫并使用下劃線分隔);

②、可以有一系列的輸入?yún)?shù),可以有一個(gè)返回值;

③、函數(shù)返回可以使用 return 語句,也可以使用表達(dá)式(末尾不帶分號(hào));

④、函數(shù)也可以不寫返回類型,這種情況下,編譯器會(huì)認(rèn)為返回類型是unit();

⑤、可執(zhí)行程序的入口是 fn main();

⑥、調(diào)用函數(shù)時(shí),Rust不關(guān)心函數(shù)定義在哪(前后都無所謂),只要定義了就行;

⑦、Rust 函數(shù)體內(nèi)可以定義其它模塊,比如靜態(tài)變量、常量、函數(shù)、trait、類型等。

2、函數(shù)實(shí)例

fn?main()?{
????let?num?=?add(1,2);
????println!("{}",num)
}

fn?add(x:i32,y:i32)?->?i32{
????x+y
}

3、函數(shù)返回值

需要注意語句和表達(dá)式的區(qū)別,表達(dá)式?jīng)]有分號(hào),有返回值。語句結(jié)尾有分號(hào),沒有返回值。

所以對于如下函數(shù),如果函數(shù)體加上分號(hào),則會(huì)報(bào)錯(cuò):

fn?add(x:i32,y:i32)?->?i32{
????x+y;
}

把 x+y; 變成表達(dá)式即可(去掉末尾的分號(hào))。

4、發(fā)散函數(shù)

Rust 支持一種特殊的發(fā)散函數(shù)(Diverging functions),它的返回類型是感嘆號(hào) !。 如果一個(gè)函數(shù)根本就不能正常返回,那么它就可以這樣寫:

fn?diverges()?->?!{
????//panic!?會(huì)直接導(dǎo)致棧展開,所以這個(gè)函數(shù)調(diào)用后面的代碼都不會(huì)執(zhí)行,它的返回類型就是!
????panic!("函數(shù)不能返回");
}

發(fā)散函數(shù)的最大特點(diǎn):可以被轉(zhuǎn)換成任意一個(gè)類型。

在Rust 中,有下列情況返回類型都是 ?。?/p>

1.panic! 以及基于它實(shí)現(xiàn)的各種函數(shù)/宏,比如unimplemented!、unreachable! 2.死循環(huán)loop{} 3.進(jìn)程退出函數(shù)std::process::exit以及類似的libc 中的exec一類函數(shù)。

5、const fn

函數(shù)可以用 const 關(guān)鍵字修飾,這樣的函數(shù)可以在編譯階段被編譯器執(zhí)行,返回值也被視為編譯期常量。

需要注意的是:const 函數(shù)是在編譯階段執(zhí)行的,因此相比普通函數(shù)有很多限制,并非所有的表達(dá)式和語句都可以在其中使用。

而且這個(gè)功能還沒有完全穩(wěn)定。


Rust 從入門到精通07-函數(shù)的評(píng)論 (共 條)

分享到微博請遵守國家法律
彭阳县| 合山市| 厦门市| 武威市| 洪湖市| 民丰县| 仲巴县| 鄱阳县| 长顺县| 通许县| 台山市| 毕节市| 星子县| 盖州市| 龙山县| 嵩明县| 大丰市| 固原市| 志丹县| 吴川市| 菏泽市| 龙江县| 德安县| 凤凰县| 荆州市| 芜湖县| 天峨县| 公主岭市| 凌云县| 永清县| 咸宁市| 罗山县| 定结县| 紫云| 铁力市| 钟祥市| 天峻县| 塔城市| 张掖市| 西峡县| 三亚市|