Match 문
Coddy Rust 여정의 Fundamentals 섹션에 포함된 레슨 — 75개 중 26번째.
match 표현식은 값을 일련의 패턴과 비교하고, 어떤 패턴이 일치하는지에 따라 코드를 실행할 수 있게 해줍니다.
match 표현식의 기본 구조는 다음과 같습니다:
match variable {
pattern1 => expression1,
pattern2 => expression2,
// ... 더 많은 패턴
_ => default_expression,
}match 키워드 뒤에는 테스트하려는 값이 옵니다.
match의 각 암(arm)은 패턴, 그 뒤에 오는 =>, 그리고 실행할 코드로 구성됩니다.
언더스코어 _는 다른 패턴과 일치하지 않는 모든 항목과 일치하는 기본 케이스입니다.
다음은 예시입니다:
let day = 3;
let day_name = match day {
1 => "Monday",
2 => "Tuesday",
3 => "Wednesday",
// ... 더 많은 패턴들,
_ => "Invalid day",
};매치 암(arm)에서 여러 줄의 코드를 사용하려면 블록을 사용하세요:
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 표현식은 철저해야(exhaustive) 하며, 이는 모든 가능한 값을 다루어야 함을 의미합니다. 컴파일러가 이를 대신 확인해 줄 것입니다.
챌린지
초급월 번호(1월은 1, 2월은 2 등)를 입력받아 해당 계절을 출력하는 프로그램을 작성하세요. 로직에는 match 문을 사용하세요.
계절과 그에 해당하는 월은 다음과 같습니다:
- Winter: 12월 (12), 1월 (1), 2월 (2)
- Spring: 3월 (3), 4월 (4), 5월 (5)
- Summer: 6월 (6), 7월 (7), 8월 (8)
- Autumn: 9월 (9), 10월 (10), 11월 (11)
치트 시트
match 표현식은 값을 패턴과 비교하고 어떤 패턴이 일치하는지에 따라 코드를 실행합니다:
match variable {
pattern1 => expression1,
pattern2 => expression2,
_ => default_expression,
}기본 예제:
let day = 3;
let day_name = match day {
1 => "Monday",
2 => "Tuesday",
3 => "Wednesday",
_ => "Invalid day",
};암(arm)에서 여러 줄의 코드를 실행하려면 블록을 사용하세요:
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",
};match 표현식은 반드시 철저해야(exhaustive) 합니다. 즉, 모든 가능한 값을 다루어야 합니다. 언더스코어 _는 다른 패턴과 일치하지 않는 모든 항목과 일치하는 기본 케이스입니다.
직접 해보기
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);
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.