match 심층 탐구
패턴과 가드
match 심층 탐구은(는) CoddyKit의 무료 Learn Rust Coding 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn Rust Coding 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn Rust Coding 강의에는 총 4개의 강의가 포함되어 있습니다.
match 표현식
match는 값을 여러 패턴과 비교하고 처음 일치하는 분기를 실행합니다. 표현식이므로 값을 반환합니다.
fn main() {
let n = 3;
let label = match n {
1 => "one",
2 => "two",
3 => "three",
_ => "many",
};
println!("{label}");
}모든 경우 처리
match는 가능한 모든 값을 다뤄야 합니다. 와일드카드 _는 앞의 분기와 일치하지 않는 모든 것을 받아 모든 경우를 처리하도록 합니다.
fn main() {
let x = 42;
match x {
0 => println!("zero"),
_ => println!("nonzero"),
}
}여러 값 매칭
|를 사용하면 하나의 분기에서 여러 패턴을 매칭할 수 있습니다.
fn main() {
let c = 'e';
match c {
'a' | 'e' | 'i' | 'o' | 'u' => println!("vowel"),
_ => println!("consonant"),
}
}범위 패턴
..=(양 끝 포함)를 사용해 값의 범위를 매칭합니다. 숫자나 문자를 그룹으로 묶을 때 유용합니다.
fn main() {
let score = 85;
let grade = match score {
90..=100 => 'A',
80..=89 => 'B',
70..=79 => 'C',
_ => 'F',
};
println!("Grade: {grade}");
}매치 가드
가드는 분기에 추가하는 if 조건입니다. 패턴이 일치하고 동시에 가드가 참일 때만 분기가 매칭됩니다.
fn main() {
let pair = (2, -2);
match pair {
(x, y) if x + y == 0 => println!("sum is zero"),
(x, _) if x % 2 == 0 => println!("first is even"),
_ => println!("no rule"),
}
}패턴에서 바인딩하기
패턴은 매칭된 부분을 변수에 바인딩하여 분기 본문에서 사용할 수 있게 합니다.
fn main() {
let msg = Some(7);
match msg {
Some(n) => println!("got {n}"),
None => println!("nothing"),
}
}열거형 매칭
match는 열거형, 특히 변형이 데이터를 포함할 때 매우 유용합니다.
enum Shape {
Circle(f64),
Rectangle(f64, f64),
}
fn area(s: Shape) -> f64 {
match s {
Shape::Circle(r) => 3.14159 * r * r,
Shape::Rectangle(w, h) => w * h,
}
}
fn main() {
println!("{}", area(Shape::Rectangle(3.0, 4.0)));
}_와 ..로 무시하기
_로 단일 값을 무시하고 ..로 튜플이나 구조체의 나머지 부분을 무시합니다.
fn main() {
let triple = (1, 2, 3);
match triple {
(first, ..) => println!("first is {first}"),
}
}match에서 반환하기
match는 표현식이므로 결과를 대입하거나 바로 반환할 수 있습니다. 모든 분기는 같은 타입을 반환해야 합니다.
fn describe(n: i32) -> &'static str {
match n.cmp(&0) {
std::cmp::Ordering::Less => "negative",
std::cmp::Ordering::Equal => "zero",
std::cmp::Ordering::Greater => "positive",
}
}
fn main() {
println!("{}", describe(-5));
}분기 순서가 중요한 이유
분기는 위에서 아래로 확인되며 처음 일치하는 분기가 선택됩니다. 구체적인 패턴을 일반적인 패턴보다 앞에 두고 와일드카드는 마지막에 배치하세요.
@로 범위 바인딩하기
범위와 @ 연산자를 결합하면 값을 검사하면서 같은 분기에서 정확한 내용도 유지할 수 있습니다.
fn main() {
let n = 42;
match n {
small @ 0..=9 => println!("single digit: {small}"),
big @ 10..=99 => println!("two digits: {big}"),
_ => println!("large"),
}
}빠른 확인
(x, y) if x > y와 같은 매치 가드는 어떤 용도로 사용하나요?
복습
match에 대해 자세히 배웠습니다.
- 모든 경우를 처리하며 값을 반환하는 표현식입니다.
|는 여러 패턴을,..=는 범위를 매칭합니다.- 가드는 추가
if조건을 더합니다. - 패턴은 데이터를 바인딩하며
_와..는 일부를 무시합니다. - 분기 순서가 중요하며 첫 번째 매칭이 선택됩니다.
자주 묻는 질문
“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개 중 1번째 강의입니다.
“match 심층 탐구” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn Rust Coding 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn Rust Coding 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- match 심층 탐구
- if let과 while let
- @를 사용한 바인딩
- 구조 분해