您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Rust語言中的函數有哪些”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Rust語言中的函數有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
Rust是一門系統編程語言 ,專注于安全 ,尤其是并發安全,支持函數式和命令式以及泛型等編程范式的多范式語言。Rust在語法上和C++類似 ,但是設計者想要在保證性能的同時提供更好的內存安全。
函數在 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 的值為 : 5y 的值為 : 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 關鍵字。
讀到這里,這篇“Rust語言中的函數有哪些”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。