Skip to main content

條件 if 表達式

if 表達式指定僅當特定條件為真 (true) 時,才應求值某些程式碼。例如:

if (x > 5) x = x - 5

該條件必須是一個類型為 bool 的表達式。

if 表達式可以選擇性地包含一個 else 子句,以指定當條件為假 (false) 時要求值的另一個表達式。

if (y <= 10) y = y + 1 else y = 10

「真」分支或「假」分支其中之一將被求值,但不會同時被求值。任何一個分支都可以是單個表達式或表達式區塊。

條件表達式可能會產生數值,使 if 表達式具備一個結果。

let z = if (x < 100) x else 100;

如果未指定 else 子句,假分支預設為單元類型 (unit value) ()。以下兩者是等價的:

if (condition) true_branch // 暗示預設為:else ()
if (condition) true_branch else ()

真分支和假分支中的表達式必須具有相容的類型。例如:

// x 和 y 必須是 u64 整數
let maximum: u64 = if (x > y) x else y;

// 錯誤!分支類型不同
let z = if (maximum < 10) 10u8 else 100u64;

// 錯誤!分支類型不同,因為預設的假分支是 () 而非 u64
let y = if (maximum >= 10) maximum;

通常,if 表達式會與 表達式區塊 (expression blocks) 結合使用。

let maximum = if (x > y) x else y;
if (maximum < 10) {
x = x + 10;
y = y + 10;
} else if (x >= 10 && y >= 10) {
x = x - 10;
y = y - 10;
}

條件語句語法 (Grammar)

if-表達式if ( 表達式 ) 表達式 else-子句可選 else-子句else 表達式