Rust學習四 rust的函式 注釋與控制流

2021-10-13 12:36:00 字數 2210 閱讀 2348

rust以fn為關鍵字宣告乙個函式。函式命名規範為全小寫,以下劃線為分隔的單詞。

fn main()
多個引數以逗號分隔,函式引數必須指定資料型別

fn test(x: i32, y: u64)()
函式體由一系列的以表示式結尾的語句組成。到目前為止我們只涉及了沒有表示式結尾的函式,但是能看出表示式是語句的一部分。因為rust是一種基於表示式的語言,這是乙個需要理解的重大區別。其他語言在語句與表示式上並沒有這樣的區別。下面來**什麼是rust語句和表示式,以及它們的不同是怎樣影響函式體的。

語句是執行某些動作且無返回值的指令集。表示式是有返回值的。

使用let關鍵字建立乙個新的變數並賦值,是一條語句。let x = 6;是一條語句。因為語句沒有返回值,所以rust不能像c/ruby那樣可以多重賦值,let x = (let y = 6);這樣的句法在rust中是錯誤的。

函式定義也是語句。

fn main()
這是乙個只包含一條語句的main函式,而它整個自身也是乙個語句。

除了語句,表示式求值構成了我們將在rust編寫的剩餘的大部分**。函式呼叫、巨集呼叫、數**算,以及 {} 構成的**域等都是表示式。表示式可以是組成語句的一部分。

fn main() ;

println!("the value of y is: {}", y);

}

以上例子,let x = 5;是一條語句, 5是乙個表示式, 它求值5並返回給了賦值語句。

let y = ;整體是乙個語句, 但是是乙個求值表示式, 它返回值給y賦值。

x + 1是乙個求值表示式,它返回值給了{}表示式。 注意x + 1結尾沒有分號。因為;是一條語句結束的完整標誌。如果表示式x + 1的結尾新增了分號,那它就變成了乙個語句,而語句是沒有返回值的。

函式在呼叫時可以返回值,rust可以不顯式的命名返回值,但必須以->宣告返回值的型別, 在rust中,函式返回值與函式體中最後乙個表示式的返回值是同義的。

fn five() -> i32
如上例, 函式體內既沒有語句,呼叫,甚至let宣告,但它是乙個完整的函式。

rust的注釋使用 雙斜槓//。 可單行,可在行**結尾後使用

if 表示式的條件必須是bool值。 rust不會自動的將非布林值轉換成布林值,所以if表示式 必須要明確返回布林型別的值。

fn main() 

}error[e0308]: mismatched types

--> src/main.rs:4:8

| 4 | if number `

上例,number是乙個整型, rust不會像其他語言一樣, 在if表示式中轉成bool。

處理多個條件時使用 else if

fn main()  else if number % 3 == 0  else if number % 2 == 0  else 

}

let語句中使用if表示式

fn main()  else ;  // note ;

println!("the value of number is {}", number);

}

let語句中使用if else時要注意,if 和else的**塊返回的值得型別要一致,不然直譯器會報錯。其實這很好理解,let語句是用來給變數賦值的,此時if else 返回的值的不確定性是有潛在的風險的, 所有它們的型別必須一致,才能保證安全性。

loop關鍵字會一直迴圈loop塊內的**,除非遇到break或ctrl c 中斷

帶條件的迴圈 while

for 迴圈, for… in … 用法與python型別

fn main() ", element);

}}

Rust學習筆記 2 函式

函式在rust中用來實現特定功能。其中,main函式是很多程式的入口點。在rust中用關鍵字fn來定義乙個函式。rust 中的函式和變數名使用 snake case 規範風格。在 snake case 中,所有字母都是小寫並使用下劃線分隔單詞。例如 fn this is a function 函式的...

Rust 函式詳解

目錄 rust 支援多種程式設計正規化,但更偏向於函式式,函式在 rust 中是 一等公民 函式可以作為資料在程式中進行傳遞。跟 c c 一樣,rust 也有乙個唯一的程式入口main函式。示例 程式入口main函式 fn main rust 使用fn關鍵字來宣告和定義函式,使用snake case...

Rust學習筆記

toc rust學習筆記 初步閱讀rust的 以學習rust語言 match 採用表示式的形式,然後根據它的值來分支。分支的每個 臂 都是 val expression 的形式。當值匹配時,這個臂的表示式將被執行實現。之所以稱之為 match 是因為 模式匹配 的術語,而這種正是 match 實現的...