學習Rust 函式
導讀 | Rust 語言是一種高效、可靠的通用高階語言。其高效不僅限於開發效率,它的執行效率也是令人稱讚的,是一種少有的兼顧開發效率和執行效率的語言。 |
函式在 Rust 語言中是普遍存在的。
透過之前的章節已經可以瞭解到 Rust 函式的基本形式:
fn <函式名> ( <引數> ) <函式體>
其中 Rust 函式名稱的命名風格是小寫字母以下劃線分割:
例項
fn main() { println!("Hello, world!"); another_function(); } fn another_function() { println!("Hello, runoob!"); }
執行結果:
Hello, world! Hello, runoob!
注意,我們在原始碼中的 main 函式之後定義了another_function。 Rust不在乎您在何處定義函式,只需在某個地方定義它們即可。
Rust 中定義函式如果需要具備引數必須宣告引數名稱和型別:
例項
fn main() { another_function(5, 6); } fn another_function(x: i32, y: i32) { println!("x 的值為 : {}", x); println!("y 的值為 : {}", y); }
執行結果:
x 的值為 : 5 y 的值為 : 6
Rust 函式體由一系列可以以表示式(Expression)結尾的語句(Statement)組成。到目前為止,我們僅見到了沒有以表示式結尾的函式,但已經將表示式用作語句的一部分。
語句是執行某些操作且沒有返回值的步驟。例如:
let a = 6;
這個步驟沒有返回值,所以以下語句不正確:
let a = (let b = 2);
表示式有計算步驟且有返回值。以下是表示式(假設出現的識別符號已經被定義):
a = 7 b + 2 c * (a + b)
Rust 中可以在一個用 {} 包括的塊裡編寫一個較為複雜的表示式:
例項
fn main() { let x = 5; let y = { let x = 3; x + 1 }; println!("x 的值為 : {}", x); println!("y 的值為 : {}", y); }
執行結果:
x 的值為 : 5 y 的值為 : 4
很顯然,這段程式中包含了一個表示式塊:
{ let x = 3; x + 1 };
而且在塊中可以使用函式語句,最後一個步驟是表示式,此表示式的結果值是整個表示式塊所代表的值。這種表示式塊叫做函式體表示式。
注意:x + 1 之後沒有分號,否則它將變成一條語句!
這種表示式塊是一個合法的函式體。而且在 Rust 中,函式定義可以巢狀:
例項
fn main() { fn five() -> i32 { 5 } println!("five() 的值為: {}", five()); }
在上一個巢狀的例子中已經顯示了 Rust 函式宣告返回值型別的方式:在引數宣告之後用 -> 來宣告函式返回值的型別(不是 : )。
在函式體中,隨時都可以以 return 關鍵字結束函式執行並返回一個型別合適的值。這也是最接近大多數開發者經驗的做法:
例項
fn add(a: i32, b: i32) -> i32 { return a + b; }
但是 Rust 不支援自動返回值型別判斷!如果沒有明確宣告函式返回值的型別,函式將被認為是"純過程",不允許產生返回值,return 後面不能有返回值表示式。這樣做的目的是為了讓公開的函式能夠形成可見的公報。
注意:函式體表示式並不能等同於函式體,它不能使用 return 關鍵字。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2739284/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 函式學習函式
- spark RDD的學習,filter函式的學習,split函式的學習SparkFilter函式
- 008 透過連結串列學習Rust之實現Peek函式Rust函式
- 008 通過連結串列學習Rust之實現Peek函式Rust函式
- Rust中的into函式和from函式Rust函式
- MySQL函式學習(一)-----字串函式MySql函式字串
- Rust 函式有哪些Rust函式
- 函式學習五函式
- 函式學習二函式
- 函式學習四函式
- 函式學習六函式
- 函式學習三函式
- 函式的學習函式
- Python學習之函式Python函式
- 字串函式學習三字串函式
- 字串函式學習二字串函式
- 字串函式學習一字串函式
- TypeScript學習(二)—— 函式TypeScript函式
- numpy學習回顧-數學函式及邏輯函式函式
- Java學習隨筆(函式式介面)Java函式
- Rust中的函式指標Rust函式指標
- async函式學習筆記。函式筆記
- 函式 - Go 學習記錄函式Go
- Python學習之zip函式Python函式
- Haskell學習-高階函式Haskell函式
- 學習Scala 方法與函式函式
- JS的學習理解--->函式JS函式
- 深度學習(啟用函式)深度學習函式
- 生成函式 學習筆記函式筆記
- go語言學習-函式Go函式
- 深度學習——loss函式的學習筆記深度學習函式筆記
- C#學習 數學函式(21)C#函式
- 013 透過連結串列學習Rust之實現連結串列的通用函式Rust函式
- 013 通過連結串列學習Rust之實現連結串列的通用函式Rust函式
- rust十三.1、匿名函式(閉包)Rust函式
- PHP 學習總結之函式PHP函式
- Python學習-字串函式操作1Python字串函式
- Python學習-字串函式操作3Python字串函式