Keyword if

source ·
Expand description

如果条件成立,则评估一个块。

if 对于大多数程序员来说是一个熟悉的结构,也是您经常在代码中进行逻辑运算的主要方式。 但是,与大多数语言不同,if 块也可以充当表达式。

if 1 == 2 {
    println!("whoops, mathematics broke");
} else {
    println!("everything's fine!");
}

let greeting = if rude {
    "sup nerd."
} else {
    "hello, friend!"
};

if let Ok(x) = "123".parse::<i32>() {
    println!("{} double that and you get {}!", greeting, x * 2);
}
Run

上面显示的是 if 块的三种典型形式。 首先是带有多种 else 块的多种语言中常见的事物。 第二种使用 if 作为表达式,仅当所有分支都返回相同类型时才有可能。 if 表达式可以在您期望的任何地方使用。 第三种 if 块是 if let 块,其行为类似于使用 match 表达式:

if let Some(x) = Some(123) {
    // code
} else {
    // 其他的东西
}

match Some(123) {
    Some(x) => {
        // code
    },
    _ => {
        // 其他的东西
    },
}
Run

每种 if 表达式都可以根据需要进行混合和匹配。

if true == false {
    println!("oh no");
} else if "something" == "other thing" {
    println!("oh dear");
} else if let Some(200) = "blarg".parse::<i32>().ok() {
    println!("uh oh");
} else {
    println!("phew, nothing's broken");
}
Run

if 关键字在 Rust 中的另一个位置使用,即作为样式匹配自身的一部分,从而允许使用诸如 Some(x) if x > 200 的样式。

有关 if 表达式的更多信息,请参见 Rust 书Reference