4.2 `if` 表达式

02-if 表达式 — Comprehensive Rust

译文 · 基于 Comprehensive Rust

原文链接: https://google.github.io/comprehensive-rust/control-flow-basics/if.html

4.2 if 表达式

if 表达式 的用法与其他语言中的 if 语句完全相同:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
// Copyright 2024 Google LLC
// SPDX-License-Identifier: Apache-2.0
fn main() {
    let x = 10;
    if x == 0 {
        println!("zero!");
    } else if x < 100 {
        println!("biggish");
    } else {
        println!("huge");
    }
}

此外,你还可以把 if 当作表达式使用。每个分支块的最后一个表达式会成为 if 表达式的值:

1
2
3
4
5
6
7
// Copyright 2024 Google LLC
// SPDX-License-Identifier: Apache-2.0
fn main() {
    let x = 10;
    let size = if x < 20 { "small" } else { "large" };
    println!("number size: {}", size);
}

因为 if 是表达式且必须有确定的类型,两个分支块必须具有相同的类型。演示在第二个示例中给 "small" 后面加上 ; 会发生什么。

if 表达式应与其他表达式以同样的方式使用。例如,用在 let 语句中时,该语句也必须以 ; 结尾。去掉 println! 前面的 ; 可以看到编译器错误。

最后修改 August 11, 2026: 更新 (70a5af133)