rust 語法和語義 03 表達式 VS 語句

rust 語法和語義 03 表達式 VS 語句

表達式 VS 語句 statement vs expression

原本此概念是寫在 <語法和語義 02 函數> 章節中,但發現其概念十分基礎,故特意單獨成章。

概述

類型 結尾 返回
語句 statement 分號; (一句話要有結尾) 無返回值 (只是一句話)
表達式 expression 無結尾 返回一個值 (表達一個結果)

rust只有兩種語句:聲明語句表達式語句。其他都是表達式

mint: 然而常態見和用的最多的是語句。。。

聲明語句

let 只能開始一個語句,而不是一個表達式。

rust中,賦值語句 的返回值是空元組 ()

let mut y = 5;
let x = (y = 6); // error, x = () not 6

表達式語句

表達式語句,把任何表達式變爲語句。因爲rust語法期望語句後面跟着語句。其例外是函數的返回表達式。

函數返回表達式

讓我們回過頭來再看看函數的返回。

fn add_one(x : u32) -> u32
{
    x + 1
}

在函數聲明時,聲明返回值是u32類型。而語句 x + 1; 的返回值是 ()。這會導致類型錯誤。所以,在函數返回時使用 表達式 x + 1 。不然,rust就會提醒你讓你去掉分號啦。

參考

發佈了59 篇原創文章 · 獲贊 20 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章