Menu
CoddyTech

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 表达式必须是穷尽的,也就是说,必须涵盖所有可能的值。编译器会帮你检查这一点。

challenge icon

挑战

入门

创建一个程序,输入月份编号(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);
}
quiz icon自我测试

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

基础知识中的所有课

自己练习: Rust 在线编译器