'match' 표현식
Coddy Rust 여정의 Logic & Flow 섹션에 포함된 레슨 — 66개 중 1번째.
match 표현식은 값을 다양한 패턴과 비교하고 어떤 패턴이 일치하는지에 따라 코드를 실행할 수 있게 해주는 Rust의 강력한 패턴 매칭 도구입니다. 여러 조건을 우아하게 처리할 수 있는 if 문의 더 발전된 버전이라고 생각하세요.
다음은 match 표현식의 기본 구문입니다:
match value {
pattern1 => code_to_run,
pattern2 => code_to_run,
_ => default_code,
}match 내부의 각 줄은 "arm"이라고 불립니다. =>는 패턴과 해당 패턴이 일치할 때 실행되는 코드를 구분합니다. 언더스코어 _는 무엇이든 일치하는 특별한 와일드카드 패턴입니다. 이는 다른 패턴과 일치하지 않는 모든 값에 대한 "catch-all"과 같습니다.
숫자를 확인하는 간단한 예제입니다:
let number = 2;
match number {
1 => println!("One"),
2 => println!("Two"),
_ => println!("Other"),
}Rust에서 match 표현식은 철저해야(exhaustive) 합니다. 즉, 가능한 모든 값을 처리해야 함을 의미합니다. 그래서 와일드카드 _가 매우 중요합니다. 이는 명시적으로 매칭되지 않은 모든 사례를 처리하도록 보장합니다.
챌린지
쉬움num을 매개변수로 받아 숫자의 값에 따라 문자열 설명을 반환하는 describe_number 함수를 작성하세요.
match 표현식을 사용하여 각 숫자마다 서로 다른 설명을 반환하도록 하세요.
조건:
num이0이면,"zero"를 반환합니다.num이1이면,"one"을 반환합니다.num이2이면,"two"를 반환합니다.num이3이면,"three"를 반환합니다.- 그 외의 다른 숫자는
"many"를 반환합니다.
매개변수:
num(i32): 설명할 숫자
반환값: 숫자에 대한 문자열 설명 (String)
치트 시트
match 표현식은 값을 여러 패턴과 비교하고, 어떤 패턴이 일치하는지에 따라 코드를 실행합니다:
match value {
pattern1 => code_to_run,
pattern2 => code_to_run,
_ => default_code,
}match 내부의 각 줄은 "arm"이라고 불립니다. =>는 패턴과 해당 패턴이 일치할 때 실행되는 코드를 구분합니다.
예시:
let number = 2;
match number {
1 => println!("One"),
2 => println!("Two"),
_ => println!("Other"),
}언더스코어 _는 다른 패턴에서 다루지 않는 모든 것을 매칭하는 와일드카드 패턴입니다. match 표현식은 반드시 exhaustive(철저)해야 합니다. 즉, 가능한 모든 값을 처리해야 합니다.
직접 해보기
fn describe_number(num: i32) -> String {
// 여기에 코드를 작성하세요
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.