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”分支。
挑战
简单你会收到一个数字作为输入。读取输入,将其转换为整数,并使用 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
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Rust 在线编译器