if

if

Rust 提供的 if 语法不是特别复杂,但它比起传统的系统语言更像动态类型语言中提供的 if。接下来让我们谈论它,以确保你掌握 Rust 中 if 的微妙之处。

if 是“分支”特定形式的更一般的概念。这个名字来自于树中的一个分支:在一个决策点有多条路径可以选择,当我们依赖于某个条件可以选择其中一个分支。

if 通常情况是一个选择会有两条路径:

let x = 5;

if x == 5 {
    println!("x is five!");
}

如果我们改变了 x 的值,上面那一行不会打印。更具体地说,如果 if 后面的表达式的求值结果为 true,那么它后面的语句块会被执行。如果是 false,那么该语句块不会被执行。

如果你想要在 if 后面表达式是 false 时发生什么,你可以使用一个 else 语句:

let x = 5;

if x == 5 {
    println!("x is five!");
} else {
    println!("x is not five :(");
}

如果有一个以上的情况下,可以使用 else if 语句:

let x = 5;

if x == 5 {
    println!("x is five!");
} else if x == 6 {
    println!("x is six!");
} else {
    println!("x is not five or six :(");
}

这都是非常标准的语法结构。然而,你也可以这样做:

let x = 5;

let y = if x == 5 {
    10
} else {
    15
}; // y: i32

我们可以(而且应该)这样写:

let x = 5;

let y = if x == 5 { 10 } else { 15 }; // y: i32

上面的代码会正常执行,因为 if 是个表达式。表达式的值是被选择的那个分支中最后一个表达式的值。并且如果 if 语句后面没有 else 语句,通常会将 () 作为语句执行的结果。