Match 语句
本课属于 Coddy Rust 学习旅程的“基础知识”单元。第 26 课,共 75 课。
match 表达式可以让你将一个值与一系列模式进行比较,并根据匹配的模式执行代码。
这是 match 表达式的基本结构:
match variable {
pattern1 => expression1,
pattern2 => expression2,
// ... 更多模式
_ => default_expression,
}match 关键字后面跟着你想要测试的值。
match 的每个分支都由一个模式、=> 和要执行的代码组成。
下划线 _ 是默认情况,可以匹配其他模式都未匹配的内容。
这是一个示例:
let day = 3;
let day_name = match day {
1 => "Monday",
2 => "Tuesday",
3 => "Wednesday",
// ……更多匹配模式,
_ => "Invalid day",
};如果一个分支中有多行代码,请使用代码块:
let day = 3;
let day_name = match day {
1 => {
println!("First day of the week!");
"Monday"
},
2 => "Tuesday",
// ... 其他情况
_ => "Invalid day",
};你可以使用 | 匹配多个模式:
let day = 3;
let day_type = match day {
1 | 2 | 3 | 4 | 5 => "Weekday",
6 | 7 => "Weekend",
_ => "Invalid day",
};Rust 中的 match 表达式必须是穷尽的,也就是说,必须涵盖所有可能的值。编译器会帮你检查这一点。
挑战
入门创建一个程序,输入月份编号(1 表示 January,2 表示 February,以此类推),并打印它所属的季节。使用 match 语句实现逻辑。
季节及对应的月份如下:
"Winter":December(12)、January(1)、February(2)"Spring":March(3)、April(4)、May(5)"Summer":June(6)、July(7)、August(8)"Autumn":September(9)、October(10)、November(11)
将这些完全一致的英文字符串赋给 season,这样程序就会打印例如 status = Spring。
亲手试试
use std::io;
fn main() {
let mut input = String::new();
io::stdin().read_line(&mut input).unwrap();
let month: i32 = input.trim().parse().unwrap();
// 在下面编写你的代码
let season =
// 不要修改下面这行代码
println!("status = {}", season);
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Rust 在线编译器