??團隊博客: 汽車電子社區(qū)
一、概述
二、函數(shù)要點
??1、函數(shù)名和變量名使用蛇形命名法(snake case),例如 fn add_two() -> {}。
??2、函數(shù)的位置可以隨便放,Rust 不關(guān)心我們在哪里定義了函數(shù),只要有定義即可。
??3、每個函數(shù)參數(shù)都需要標注類型。
三、函數(shù)參數(shù)
??Rust 是強類型語言,因此需要你為每一個函數(shù)參數(shù)都標識出它的具體類型,例如:
fn main() {
another_function(5, 6.1);
}
fn another_function(x: i32, y: f32) {
println!("The value of x is: {}", x);
println!("The value of y is: {}", y);
}
四、函數(shù)返回
??在 Rust 中函數(shù)就是表達式,因此我們可以把函數(shù)的返回值直接賦給調(diào)用者。
??函數(shù)的返回值就是函數(shù)體最后一條表達式的返回值,當然我們也可以使用 return 提前返回,下面的函數(shù)使用最后一條表達式來返回一個值:
fn plus_five(x:i32) -> i32 {
x + 5
}
fn main() {
let x = plus_five(5);
println!("The value of x is: {}", x);
}
??來看兩個重點:
????1、let x = plus_five(5),說明我們用一個函數(shù)的返回值來初始化 x 變量,因此側(cè)面說明了在 Rust 中函數(shù)也是表達式,這種寫法等同于 let x = 5 + 5;。
????2、x + 5 沒有分號,因為它是一條表達式,這個在上一節(jié)中我們也有詳細介紹。
??再來看一段代碼,同時使用 return 和表達式作為返回值:
fn plus_or_minus(x:i32) -> i32 {
if x > 5 {
return x - 5
}
x + 5
}
fn main() {
let x = plus_or_minus(5);
println!("The value of x is: {}", x);
}
??plus_or_minus 函數(shù)根據(jù)傳入 x 的大小來決定是做加法還是減法,若 x > 5 則通過 return 提前返回 x - 5 的值,否則返回 x + 5 的值。
五、Rust中的特殊返回類型
5.1、無返回值
??單元類型 (),是一個零長度的元組。它沒啥作用,但是可以用來表達一個函數(shù)沒有返回值:
????1、函數(shù)沒有返回值,那么返回一個 ()。
????2、通過 ; 結(jié)尾的表達式返回一個 ()。
??例如下面的 report 函數(shù)會隱式返回一個 ():
use std::fmt::Debug;
fn report<T: Debug>(item: T) {
println!("{:?}", item);
}
??與上面的函數(shù)返回值相同,但是下面的函數(shù)顯式的返回了 ():
fn clear(text: &mut String) -> () {
*text = String::from("");
}
??在實際編程中,你會經(jīng)常在錯誤提示中看到該 () 的身影出沒,假如你的函數(shù)需要返回一個 u32 值,但是如果你不幸的以 表達式; 的方式作為函數(shù)的最后一行代碼,就會報錯:
fn add(x:u32,y:u32) -> u32 {
x + y;
}
??只有表達式能返回值,而 ; 結(jié)尾的是語句,在 Rust 中,一定要嚴格區(qū)分表達式和語句的區(qū)別,這個在其它語言中往往是被忽視的點。
5.2、永不返回的發(fā)散函數(shù)
??當用 ! 作函數(shù)返回類型的時候,表示該函數(shù)永不返回( diverge function ),特別的,這種語法往往用做會導致程序崩潰的函數(shù):文章來源:http://www.zghlxwxcb.cn/news/detail-814854.html
fn dead_end() -> ! {
panic!("你已經(jīng)到了窮途末路,崩潰吧!");
}
??下面的函數(shù)創(chuàng)建了一個無限循環(huán),該循環(huán)永不跳出,因此函數(shù)也永不返回:文章來源地址http://www.zghlxwxcb.cn/news/detail-814854.html
fn forever() -> ! {
loop {
//...
};
}
到了這里,關(guān)于深入理解Rust函數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!