3.3 函數(shù)

Rust 中的函數(shù)定義以 fn 開始并在函數(shù)名后跟一對圓括號。大括號告訴編譯器哪里是函數(shù)體的開始和結(jié)尾扼菠。

Rust 代碼中的函數(shù)和變量名使用 snake case(蛇形命名法) 規(guī)范風(fēng)格恰梢。在 snake case 中容握,所有字母都是小寫并使用下劃線分隔單詞.

一 函數(shù)調(diào)用

cargo new functions 創(chuàng)建項目

vim ./src/main.rs 輸入以下內(nèi)容

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

    another_function();
}

fn another_function() {
    println!("Another function")
}
~      

運行
cargo run

   Compiling functions v0.1.0 (/home/li/projects/functions)
    Finished dev [unoptimized + debuginfo] target(s) in 6.00s
     Running `target/debug/functions`
Hello, world!
Another function

二 函數(shù)參數(shù)

在函數(shù)簽名中芋膘,必須 聲明每個參數(shù)的類型旦袋。這是 Rust 設(shè)計中一個經(jīng)過慎重考慮的決定:要求在函數(shù)定義中提供類型注解祭钉,意味著編譯器不需要你在代碼的其他地方注明類型來指出你的意圖瞄沙。

當(dāng)一個函數(shù)有多個參數(shù)時,使用逗號分隔

another_function 的聲明中有命名為 x , y的參數(shù)。x, y 的類型被指定為 i32距境。
修改mian.rs

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

    another_function(5, 6);
}

fn another_function(x: i32, y: i32) {
    println!("Another function input is : {} {}", x, y);
}

運行結(jié)果

 cargo run
   Compiling functions v0.1.0 (/home/li/projects/functions)
    Finished dev [unoptimized + debuginfo] target(s) in 0.40s
     Running `target/debug/functions`
Hello, world!
Another function input is : 5 6

三 包含表達式的函數(shù)體

實際上申尼,我們已經(jīng)使用過語句和表達式。語句(Statements)是執(zhí)行一些操作但不返回值的指令垫桂。表達式(Expressions)計算并產(chǎn)生一個值师幕。

let y = 6; //語句
let y = {
        let x = 3;
        x + 1
    }; //
/*其中語句為表達式,
 {
        let x = 3;
        x + 1
    };*/

注意: 注意結(jié)尾沒有分號的那一行 x+1诬滩,與你見過的大部分代碼行不同霹粥。表達式的結(jié)尾沒有分號。如果在表達式的結(jié)尾加上分號疼鸟,它就變成了語句后控,而語句不會返回值。在接下來探索具有返回值的函數(shù)和表達式時要謹(jǐn)記這一點空镜。

四 函數(shù)返回值

函數(shù)可以向調(diào)用它的代碼返回值浩淘。我們并不對返回值命名,但要在箭頭(->)后聲明它的類型吴攒。在 Rust 中张抄,函數(shù)的返回值等同于函數(shù)體最后一個表達式的值。使用 return 關(guān)鍵字和指定值洼怔,可從函數(shù)中提前返回署惯;但大部分函數(shù)隱式的返回最后的表達式。這是一個有返回值的函數(shù)的例子:

fn five() -> i32 {
    5
}

fn main() {
    let x = five();

    println!("The value of x is: {}", x);
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末茴厉,一起剝皮案震驚了整個濱河市泽台,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌矾缓,老刑警劉巖怀酷,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嗜闻,居然都是意外死亡蜕依,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門琉雳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來样眠,“玉大人,你說我怎么就攤上這事翠肘¢苁” “怎么了?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵束倍,是天一觀的道長被丧。 經(jīng)常有香客問我盟戏,道長,這世上最難降的妖魔是什么甥桂? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任柿究,我火速辦了婚禮,結(jié)果婚禮上黄选,老公的妹妹穿的比我還像新娘蝇摸。我一直安慰自己,他們只是感情好办陷,可當(dāng)我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布貌夕。 她就那樣靜靜地躺著,像睡著了一般民镜。 火紅的嫁衣襯著肌膚如雪蜂嗽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天殃恒,我揣著相機與錄音植旧,去河邊找鬼。 笑死离唐,一個胖子當(dāng)著我的面吹牛病附,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播亥鬓,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼完沪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了嵌戈?” 一聲冷哼從身側(cè)響起覆积,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎熟呛,沒想到半個月后宽档,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡庵朝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年吗冤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片九府。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡椎瘟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出侄旬,到底是詐尸還是另有隱情肺蔚,我是刑警寧澤,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布儡羔,位于F島的核電站宣羊,受9級特大地震影響声旺,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜段只,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鉴扫。 院中可真熱鬧赞枕,春花似錦、人聲如沸坪创。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽莱预。三九已至柠掂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間依沮,已是汗流浹背涯贞。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留危喉,地道東北人宋渔。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像辜限,于是被迫代替她去往敵國和親皇拣。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內(nèi)容