条件if表达式

if表达式指定只有在某个条件为真时才会评估一些代码。 例如:

if (x > 5) x = x - 5

条件必须是一个bool类型的表达式。

if表达式可以可选地包含一个else子句,用于指定当条件为假时要评估的另一个表达式。

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

"true"分支或"false"分支将被评估,但不会同时评估两者。任一分支可以是单个表达式或表达式块。

条件表达式可以生成值,以使if表达式具有结果。

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

true分支和false分支的表达式必须具有兼容的类型。例如:

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

// 错误!分支类型不同
let z = if (maximum < 10) 10u8 else 100u64;

// 错误!分支类型不同,因为默认的false分支是()而不是u64
if (maximum >= 10) maximum;

如果未指定else子句,则false分支默认为单元值。以下两种写法是等价的:

if (条件) true分支 // 默认隐含:else ()
if (条件) true分支 else ()

通常,if表达式与表达式块一起使用。

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;
}

条件语句的语法

if-expressionif ( expression ) expression else-clauseopt > else-clauseelse expression