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就會提醒你讓你去掉分號啦。