Câu lệnh match
Thuộc phần Kiến thức nền tảng trong hành trình Rust của Coddy. Bài học 26 trên 75.
Biểu thức match cho phép bạn so sánh một giá trị với một loạt mẫu và chạy code dựa trên mẫu khớp.
Đây là cấu trúc cơ bản của biểu thức match:
match variable {
pattern1 => expression1,
pattern2 => expression2,
// ... thêm các mẫu khác
_ => default_expression,
}Từ khóa match đứng trước giá trị mà bạn muốn kiểm tra.
Mỗi nhánh của biểu thức match gồm một mẫu, theo sau là => và đoạn code cần chạy.
Dấu gạch dưới _ là trường hợp mặc định, khớp với mọi thứ không khớp với các mẫu khác.
Đây là một ví dụ:
let day = 3;
let day_name = match day {
1 => "Monday",
2 => "Tuesday",
3 => "Wednesday",
// ... thêm các mẫu khác,
_ => "Invalid day",
};Với nhiều dòng code trong một nhánh, hãy dùng một khối lệnh:
let day = 3;
let day_name = match day {
1 => {
println!("First day of the week!");
"Monday"
},
2 => "Tuesday",
// ... các trường hợp khác
_ => "Invalid day",
};Bạn có thể khớp nhiều mẫu bằng cách dùng |:
let day = 3;
let day_type = match day {
1 | 2 | 3 | 4 | 5 => "Weekday",
6 | 7 => "Weekend",
_ => "Invalid day",
};Các biểu thức match trong Rust phải bao quát mọi trường hợp, nghĩa là chúng phải xử lý tất cả giá trị có thể có. Trình biên dịch sẽ kiểm tra điều này giúp bạn.
Thử thách
Người mớiTạo một chương trình nhận vào số tháng (1 tương ứng với tháng Một, 2 tương ứng với tháng Hai, v.v.) và in ra mùa tương ứng. Dùng câu lệnh match để xử lý logic.
Các mùa và tháng tương ứng là:
"Winter": tháng Mười Hai (12), tháng Một (1), tháng Hai (2)"Spring": tháng Ba (3), tháng Tư (4), tháng Năm (5)"Summer": tháng Sáu (6), tháng Bảy (7), tháng Tám (8)"Autumn": tháng Chín (9), tháng Mười (10), tháng Mười Một (11)
Gán chính xác các chuỗi tiếng Anh này cho season để chương trình in ra, ví dụ: status = Spring.
Tự làm thử
use std::io;
fn main() {
let mut input = String::new();
io::stdin().read_line(&mut input).unwrap();
let month: i32 = input.trim().parse().unwrap();
// Viết code của bạn bên dưới
let season =
// Đừng thay đổi dòng bên dưới
println!("status = {}", season);
}Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức nền tảng
5Các toán tử phần 2
Các toán tử logic phần 1Các toán tử logic phần 2Ôn tập: logic đơn giảnCác toán tử logic phần 33Biến phần 2
Khai báo kiểu dữ liệuQuy ước đặt tênSuy luận kiểu dữ liệuÔn tập: Khởi tạo biếnÉp kiểu dữ liệu9Vòng lặp
Vòng lặp for qua chuỗiVòng lặp whileBreakContinueVòng lặp lồng nhauNhãn vòng lặpVòng lặp vô hạnÔn tập: Đầu vào động12Kiến thức cơ bản về mảng
Khai báo mảngMảng làm tham sốTruy cập phần tửChỉnh sửa mảngÔn tập: In mảng đẹp mắtTự luyện tập: Trình biên dịch Rust online