Menu
CoddyTech

匹配范围

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

当你需要检查某个值是否落在特定的数字范围内时,为每个值分别编写分支会很繁琐。Rust 的 match 表达式支持范围模式,你可以使用 start..=end 语法来匹配连续范围内的值。

..= 运算符会创建一个包含端点的范围,也就是说,匹配时会包含起始值和结束值。下面是如何在 match 分支中使用范围:

let temp = 22;

match temp {
    ..=0 => println!("Freezing"),
    1..=15 => println!("Cold"),
    _ => println!("Warm"),
}

在这个示例中,温度为 22 时不匹配前两个范围,因此会落入通配分支并打印 "Warm"。范围 1..=15 包含 1 和 15,因此温度在 1 到 15 之间都会打印 "Cold"。

challenge icon

挑战

简单

你会收到一个年龄作为输入。读取输入,将其转换为整数,然后使用带有范围模式的 match 表达式,打印相应的年龄类别。

要求:

  • 如果年龄在 0..=12 范围内,打印 "Child"
  • 如果年龄在 13..=19 范围内,打印 "Teenager"
  • 如果年龄在 20..=64 范围内,打印 "Adult"
  • 如果年龄在 65..=120 范围内,打印 "Senior"
  • 对于其他年龄,打印 "Invalid age"

输入:一个表示年龄的整数

输出:打印年龄类别:"Child"、"Teenager"、"Adult"、"Senior" 或 "Invalid age"

亲手试试

use std::io;

fn main() {
    // 读取输入
    let mut input = String::new();
    io::stdin().read_line(&mut input).expect("Failed to read line");
    let age: i32 = input.trim().parse().expect("Please enter a valid number");
    
    // TODO:在下方使用带范围模式的 match 表达式编写代码
    
    // 输出结果
}
quiz icon自我测试

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

逻辑与流程中的所有课

自己练习: Rust 在线编译器