0Pricing
Learn Rust Coding · 강의

매칭 가드와 바인딩

조건을 추가하고 값을 추출해 보세요.

매칭 가드와 바인딩은(는) CoddyKit의 무료 Learn Rust Coding 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn Rust Coding 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn Rust Coding 강의에는 총 4개의 강의가 포함되어 있습니다.

match 가드란 무엇인가요?

match 가드는 match 분기에 추가하는 if 조건입니다. 패턴이 일치하고 동시에 조건이 참일 때만 해당 분기가 실행됩니다.

데이터에 따라 하나의 variant를 더 세부적인 경우로 나눌 수 있습니다.

match number {
    Some(n) if n > 0 => println!("positive"),
    Some(n) => println!("zero or negative"),
    None => println!("no number"),
}

가드 문법

패턴을 작성한 다음 if condition, 그다음 =>를 작성합니다. 조건에서는 패턴으로 바인딩한 모든 변수를 사용할 수 있습니다.

가드가 거짓이면 Rust는 다음 분기를 시도합니다.

fn main() {
    let n = 4;
    match n {
        x if x % 2 == 0 => println!("even"),
        _ => println!("odd"),
    }
}

enum 데이터와 함께 사용하는 가드

가드는 데이터를 담는 enum과 함께 사용할 때 가장 유용합니다. 내부 값을 바인딩한 다음 검사합니다.

여기서는 양의 잔액과 음의 잔액에 서로 다른 메시지를 표시합니다. 두 값은 같은 variant이지만 결과는 다릅니다.

enum Account {
    Balance(i32),
    Closed,
}

fn main() {
    let a = Account::Balance(-5);
    match a {
        Account::Balance(b) if b < 0 => println!("overdrawn"),
        Account::Balance(b) => println!("balance {}", b),
        Account::Closed => println!("closed"),
    }
}

순서는 여전히 중요합니다

분기는 위에서 아래 순서로 시도되므로, 더 구체적인 가드 분기를 일반적인 분기보다 앞에 배치하세요.

일반적인 Balance(b) 분기가 먼저 나오면 모든 값과 일치하므로 가드 분기는 실행되지 않습니다.

리터럴 값 매칭

가드 없이 패턴에서 특정 리터럴과 직접 매칭할 수도 있습니다.

여기서는 0과 1을 정확히 매칭하고, 나머지는 _가 처리합니다.

fn main() {
    let n = 1;
    match n {
        0 => println!("zero"),
        1 => println!("one"),
        _ => println!("many"),
    }
}

범위 매칭

..=를 사용하면 값의 범위와 매칭할 수 있으며, 양 끝값이 모두 포함됩니다.

여러 비교 가드 대신 사용할 수 있는 깔끔한 방법입니다.

fn main() {
    let score = 85;
    match score {
        0..=59 => println!("fail"),
        60..=100 => println!("pass"),
        _ => println!("out of range"),
    }
}

@ 연산자로 바인딩하기

@ 연산자를 사용하면 값을 패턴과 검사하면서 동시에 이름에 바인딩할 수 있습니다.

여기서 id @ 1..=5는 범위를 확인하고 실제 값을 id에 저장하므로 출력할 수 있습니다.

fn main() {
    let n = 3;
    match n {
        id @ 1..=5 => println!("small id {}", id),
        other => println!("other {}", other),
    }
}

전체 값 바인딩하기

위의 other와 같이 패턴에 일반 이름을 사용하면 전체 값이 바인딩됩니다. 이는 여전히 사용할 수 있는 모든 값에 대한 대체 패턴처럼 동작합니다.

값을 무시하려면 _를 사용하고, 값이 필요하면 이름을 사용하세요.

fn main() {
    let n = 99;
    match n {
        0 => println!("zero"),
        value => println!("got {}", value),
    }
}

가드와 바인딩 함께 사용하기

정밀하게 제어하려면 바인딩과 가드를 함께 사용할 수 있습니다. 데이터를 바인딩한 다음 조건을 추가하세요.

이 프로그램은 큰 짝수 잔액을 특별히 표시합니다.

enum Account {
    Balance(i32),
}

fn main() {
    let a = Account::Balance(200);
    match a {
        Account::Balance(b) if b > 100 && b % 2 == 0 => println!("big even {}", b),
        Account::Balance(b) => println!("normal {}", b),
    }
}

여러 패턴에 가드 적용하기

분기에서 |로 여러 패턴을 결합하더라도 가드는 분기 전체에 적용됩니다.

나열된 패턴 중 하나라도 일치한 후에 조건을 검사합니다.

fn main() {
    let n = 6;
    match n {
        2 | 4 | 6 if n > 3 => println!("big even"),
        _ => println!("other"),
    }
}

종합하기

이 최종 프로그램은 데이터를 가진 variant, 바인딩, 가드, 모든 경우를 처리하는 대체 패턴을 결합해 온도 값을 분류합니다.

값을 바꾸고 다시 실행해 서로 다른 분기가 실행되는 것을 확인해 보세요.

enum Reading {
    Temp(i32),
    Missing,
}

fn main() {
    let r = Reading::Temp(38);
    match r {
        Reading::Temp(t) if t >= 38 => println!("fever: {}", t),
        Reading::Temp(t) => println!("normal: {}", t),
        Reading::Missing => println!("no reading"),
    }
}

빠른 확인

가드와 바인딩에 대한 이해도를 확인해 보세요.

복습

가드(pattern if condition)로 매칭을 세밀하게 조정하고, 리터럴과 범위(..=)를 매칭하며, 이름이나 @ 연산자로 바인딩을 만드는 방법을 배웠습니다.

이전 내용과 결합하면 이제 고정된 상태 집합을 모델링하고, 각 상태에 데이터를 연결하며, 각각의 경우에 정확히 대응할 수 있습니다. enum과 match를 잘 익히셨습니다!

자주 묻는 질문

“매칭 가드와 바인딩” 강의는 무료인가요?

네 — “매칭 가드와 바인딩” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn Rust Coding 강의 전체를 잠금 해제할 수 있습니다. Learn Rust Coding 강의에는 총 4개의 강의가 포함되어 있습니다.

“매칭 가드와 바인딩”에서 뭘 배우나요?

조건을 추가하고 값을 추출해 보세요. 브라우저에서 직접 실행하는 실습 코드로 Learn Rust Coding을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Learn Rust Coding을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Learn Rust Coding은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“매칭 가드와 바인딩” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Learn Rust Coding 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Learn Rust Coding 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 첫 열거형 정의하기
  2. 열거형 변형에 따라 매칭하기
  3. 데이터를 담은 열거형
  4. 매칭 가드와 바인딩
← Learn Rust Coding(으)로 돌아가기