열거형 변형에 따라 매칭하기
match를 사용해 각 경우를 처리해 보세요.
열거형 변형에 따라 매칭하기은(는) CoddyKit의 무료 Learn Rust Coding 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn Rust Coding 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn Rust Coding 강의에는 총 4개의 강의가 포함되어 있습니다.
match 표현식 만나기
match 표현식은 값을 일련의 패턴과 비교하고, 일치하는 첫 번째 패턴에 해당하는 코드를 실행합니다.
열거형과 자연스럽게 함께 사용되며, 각 변형을 고유한 분기에서 처리할 수 있습니다.
enum Light {
Red,
Green,
}
fn action(l: Light) {
match l {
Light::Red => println!("Stop"),
Light::Green => println!("Go"),
}
}match 분기의 구조
각 분기는 pattern => expression 형식이며, 분기들은 쉼표로 구분합니다.
패턴은 무엇을 비교할지 나타내고, => 뒤의 표현식은 일치할 때 실행됩니다. 여기서 패턴은 하나의 열거형 변형입니다.
match light {
Light::Red => println!("Stop"),
Light::Green => println!("Go"),
}완전한 match 프로그램
다음은 교통 신호를 비교하고 안내 문구를 출력하는 완전한 프로그램입니다.
실행한 다음 main에서 변형을 바꾸어 다른 분기가 실행되는 것을 확인해 보세요.
enum TrafficLight {
Red,
Yellow,
Green,
}
fn main() {
let light = TrafficLight::Yellow;
match light {
TrafficLight::Red => println!("Stop"),
TrafficLight::Yellow => println!("Slow down"),
TrafficLight::Green => println!("Go"),
}
}match는 모든 경우를 처리해야 합니다
Rust에서는 match가 가능한 모든 변형을 다루어야 합니다. 하나라도 빠뜨리면 프로그램이 컴파일되지 않습니다.
이는 강력한 안전 기능입니다. 나중에 새 변형을 추가하면 컴파일러가 이를 처리해야 하는 모든 위치를 알려 줍니다.
// This would FAIL to compile because
// the Green case is missing:
// match light {
// Light::Red => println!("Stop"),
// }_를 사용한 포괄 패턴
모든 변형을 일일이 나열하고 싶지 않을 때는 밑줄 _을 포괄 패턴으로 사용합니다. 위에서 처리하지 않은 모든 값과 일치합니다.
분기는 순서대로 시도되므로 포괄 패턴은 마지막에 배치하세요.
enum Coin {
Penny,
Nickel,
Dime,
Quarter,
}
fn main() {
let c = Coin::Dime;
match c {
Coin::Penny => println!("1 cent"),
_ => println!("Some other coin"),
}
}match는 값을 반환합니다
match는 표현식이므로 변수에 저장할 수 있는 값을 생성합니다.
모든 분기는 같은 타입을 반환해야 합니다. 여기서는 각 분기의 표현식 뒤에 세미콜론이 없다는 점에 주목하세요.
enum Coin {
Penny,
Quarter,
}
fn main() {
let coin = Coin::Quarter;
let cents = match coin {
Coin::Penny => 1,
Coin::Quarter => 25,
};
println!("{} cents", cents);
}여러 줄로 이루어진 분기 본문
중괄호 { ... }로 감싸면 한 분기에서 여러 문을 실행할 수 있습니다.
중괄호 안의 마지막 표현식이 해당 분기가 생성하는 값입니다.
match light {
Light::Red => {
println!("Caution!");
println!("Stop the car");
}
Light::Green => println!("Go"),
}|로 패턴 결합하기
파이프 |를 사용하면 하나의 분기에서 여러 변형과 일치시킬 수 있습니다. 이는 "또는"이라는 뜻으로 읽습니다.
같은 방식으로 동작해야 하는 변형에 동일한 본문을 반복해서 작성하지 않아도 됩니다.
enum Coin {
Penny,
Nickel,
Dime,
Quarter,
}
fn main() {
let c = Coin::Nickel;
match c {
Coin::Penny | Coin::Nickel => println!("Small coin"),
_ => println!("Bigger coin"),
}
}match와 if/else 비교
변형을 확인하기 위해 if / else if를 연속해서 사용할 수도 있지만, match가 더 명확하고 안전합니다.
match를 사용하면 컴파일러가 모든 경우를 처리했는지 확인합니다. if 문을 연속해서 사용하는 방식에는 이러한 보장이 없습니다.
비교와 출력 함께 사용하기
변형을 친숙한 문자열로 바꾸어 출력하는 것은 흔히 사용하는 방식입니다.
이 프로그램을 실행한 다음 선택한 방향을 바꾸어 비교 결과에 따른 메시지를 확인해 보세요.
enum Direction {
North,
South,
East,
West,
}
fn main() {
let d = Direction::West;
let name = match d {
Direction::North => "North",
Direction::South => "South",
Direction::East => "East",
Direction::West => "West",
};
println!("Heading {}", name);
}순서가 중요합니다
분기는 위에서 아래 순서로 확인하며, 처음 일치하는 분기가 선택됩니다. 나머지 분기는 건너뜁니다.
따라서 포괄 패턴 _은 마지막에 와야 합니다. 처음에 배치하면 특정 분기가 실행되기 전에 모든 값을 가로채기 때문입니다.
빠른 확인
match에 대한 이해도를 확인해 보세요.
복습
match는 값을 패턴과 비교하고 처음으로 일치하는 분기를 실행한다는 것을 배웠습니다.
모든 경우를 처리해야 하며, _을 포괄 패턴으로 사용할 수 있고, |로 변형을 결합할 수 있습니다. 또한 표현식이므로 값을 반환합니다. 다음에는 열거형 변형에 데이터를 추가하는 방법을 배웁니다.
자주 묻는 질문
“열거형 변형에 따라 매칭하기” 강의는 무료인가요?
네 — “열거형 변형에 따라 매칭하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn Rust Coding 강의 전체를 잠금 해제할 수 있습니다. Learn Rust Coding 강의에는 총 4개의 강의가 포함되어 있습니다.
“열거형 변형에 따라 매칭하기”에서 뭘 배우나요?
match를 사용해 각 경우를 처리해 보세요. 브라우저에서 직접 실행하는 실습 코드로 Learn Rust Coding을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Learn Rust Coding을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Learn Rust Coding은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“열거형 변형에 따라 매칭하기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn Rust Coding 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn Rust Coding 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 첫 열거형 정의하기
- 열거형 변형에 따라 매칭하기
- 데이터를 담은 열거형
- 매칭 가드와 바인딩