表達(dá)式和語句

rust是一門基于表達(dá)式的語言。在他的體系中,只有兩種語句,他們分別是聲明語句和表達(dá)式語句。除了這兩種語句外都是表達(dá)式了。

1.表達(dá)式和語句的區(qū)別
表達(dá)式返回一個值,但是語句并不會返回一個值,語句會使用分號作為結(jié)束。

2.聲明語句
rust使用let來開始一個聲明語句,所以也就是說let開頭則一定是語句。所以像下面這樣的用法就是錯誤的:

let a:i32 = (let b:i32 = 5);//expected expression, found statement (`let`)

從上面的錯誤提示我們便可以看出,let是用來開啟語句的,而對于語句來說是不會有返回值的,所以報(bào)錯。
但是賦值一個已經(jīng)存在的變量則可以是一個表達(dá)式:

let mut b:i32 = 0;
let a = (b = 9);//a的值是一個空元組(),而不是9

需要注意的地方:b=9雖然是一個表達(dá)式,但是他的返回值并不是9這個數(shù)值,雖然這在其他常見的編程語言里面也許返回的事9,但是在我們的rust里面并不是這樣,在rust中,賦值一個已經(jīng)存在過的變量是一個表達(dá)式,這個表達(dá)式的返回值是一個空的元組()。

3.表達(dá)式語句
他就是強(qiáng)制將表達(dá)式轉(zhuǎn)換為語句。

4.提前返回
我們可以利用return關(guān)鍵詞來顯示返回一個值,盡管return是一個語句,但是它也具有為函數(shù)返回值的能力。注意這么一種情況:在顯式返回的return語句后面加上一個用于返回值得表達(dá)式時(shí),那么返回的值將會是return所指定的。

fn main(){
   let a:i32 = test(3);
   println!("{}", a);
}
fn test(a:i32) -> i32{
  return a;
  a+1//這句是沒用的
}

通過上面的例子,我們可以看出當(dāng)return語句和返回值表達(dá)式共存的時(shí)候,返回值表達(dá)式會被屏蔽。盡管使用return可以讓我們找回使用其他編程語言的熟悉感,但是鑒于rust語言是基于表達(dá)式設(shè)計(jì)的這一理念,推薦使用返回值表達(dá)式作為函數(shù)的返回值是一個更好的選擇。

END

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 1:賦值語句 賦值語句可以建立新的變量,并給它們賦值。message = 'I like python'n = 1...
    Hey_大晨閱讀 358評論 0 1
  • 什么是表達(dá)式 (expression)? 一個表達(dá)式會算出一個值,但是它不會做任何事:也就是它不會以任何形式改變程...
    水劍承王閱讀 185評論 0 1
  • 不要輕易離開團(tuán)隊(duì),否則你要從零做起: 1、不要老想著做不順就放棄,哪個團(tuán)隊(duì)都有問題,哪個團(tuán)隊(duì)都有優(yōu)點(diǎn)。 ...
    Robin_lian閱讀 398評論 0 0
  • 嗯,還是想先要表揚(yáng)一下自己 從7月開始做月總結(jié) 到10月已經(jīng)是第四個月啦~ 為什么做月總結(jié)呢? 最開始也只是想記錄...
    播新_怡睿閱讀 146評論 0 0
  • 當(dāng)你笑話我,我就當(dāng)放了個屁,我也是有追求的,我的追求就是努力做一個不給被人減分的人,僅此而已。 ...
    溱文字閱讀 352評論 1 0