匹配范围
本课属于 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"。
挑战
简单你会收到一个年龄作为输入。读取输入,将其转换为整数,然后使用带有范围模式的 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 表达式编写代码
// 输出结果
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Rust 在线编译器