Menu
CoddyTech

if let 表达式

本课属于 Coddy Rust 学习旅程的“逻辑与流程”单元。第 4 课,共 66 课。

有时,你只需要检查一种特定模式,而不关心其他所有可能性。只写一个有意义的分支,再加上一个兜底的 _,组成完整的 match 表达式,可能会显得冗长。Rust 提供了 if let,作为这类情况下更简洁的替代方案。

if let 表达式可以让你在一条清晰易读的语句中结合模式匹配和条件逻辑。基本语法如下:

if let pattern = value {
    // 如果 pattern 匹配,就运行这里的代码
}

例如,与其编写只有一个有用分支的 match:

let number = 5;

match number {
    5 => println!("Found five!"),
    _ => (), // 其他值不做任何操作
}

你可以使用 if let 让代码更简洁:

let number = 5;

if let 5 = number {
    println!("Found five!");
}

只有在模式匹配时,if let 表达式才会执行代码块。如果不匹配,就不会发生任何事情。除非你需要,否则不必显式编写“else”分支。

challenge icon

挑战

简单

你会收到一个数字作为输入。读取输入,将其转换为整数,并使用 if let 表达式检查这个数字是否恰好是 42。如果匹配,则打印 "The answer!"。如果不匹配,则不打印任何内容。

要求:

  • 使用 if let 表达式检查这个数字是否等于 42
  • 如果这个数字是 42,则打印 "The answer!"
  • 如果这个数字是其他任何值,则不打印任何内容

输入:一个整数

输出:如果这个数字是 42,则打印 "The answer!",否则不打印任何内容

亲手试试

use std::io;

fn main() {
    // 读取输入
    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let number: i32 = input.trim().parse().expect("Please enter a valid number");
    
    // TODO:在下方编写你的代码
    // 使用 if let 检查 number 是否等于 42
    
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Rust 在线编译器