Rust - match (Switch) 사용 방법

러스트는 다른 언어에서 제공하는 switch문이 없습니다. 대신 비슷한 동작을 하는 match가 있습니다.

match를 어떻게 사용할 수 있는지 예제와 함께 알아보겠습니다.

1. 일치하는 조건의 코드 실행

아래와 같이 Switch 처럼, 입력 값과 일치하는 조건에 대한 코드를 실행시킬 수 있습니다.

아래 예제에서

  • choice가 1일 때, match의 1에 해당하는 코드가 수행됩니다.
  • choice가 2일 때, match의 1에 해당하는 코드가 수행됩니다.
  • choice가 다른 값일 때, _에 해당하는 코드가 수행됩니다. Java의 default와 동일합니다.
fn main() {
    let choice = 1;
    match choice {
        1 => println!("choice is 1"),
        2 => println!("choice is 2"),
        _ => println!("choice is undefined value"),
    };
}

Output:

choice is 1

2. 일치하는 조건의 값 리턴

match의 다른 사용 방법으로, 일치하는 조건에 대한 값을 리턴합니다.

아래 코드에서

  • choice가 1일 때, match의 1에 해당하는 값 100이 리턴됩니다.
  • choice가 2일 때, match의 1에 해당하는 값 200이 리턴됩니다.
  • choice가 다른 값일 때, _에 해당하는 값 300이 리턴됩니다.
fn main() {
    let choice = 1;
    let num = match choice {
        1 => 100,
        2 => 200,
        _ => 300,
    };
    println!("num: {}", num);
}

Output:

num: 100

3. match에 문자열(str)을 사용하는 예제

int 뿐만 아니라, str 타입도 match 구문에 사용할 수 있습니다.

fn main() {
    let choice: &str = "2";
    let num = match choice {
        "1" => 100,
        "2" => 200,
        _ => 300,
    };
    println!("num: {}", num);
}

Output:

num: 200

4. match에 ENUM을 사용하는 예제

아래와 같이 ENUM 타입도 match 구문에 사용할 수 있습니다.

fn main() {
    enum FRUITS {
        APPLE,
        KIWI,
        BLUEBERRY,
        MELON
    }

    let choice = FRUITS::KIWI;
    let res = match choice {
        FRUITS::APPLE => 100,
        FRUITS::KIWI => 200,
        FRUITS::BLUEBERRY => 300,
        FRUITS::MELON => 400,
        _ => 500,
    };
    println!("result: {}", res);
}

Output:

result: 200
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha