Skip to main content

match 문

if문을 사용하다보면 다음과 같은 상황에서 문제가 생길 수 있습니다.

fn main() {
let x = 1;

if x == 1 {
println!("x is 1");
} else if x == 2 {
println!("x is 2");
} else if x == 3 {
println!("x is 3");
} else if x == 4 {
println!("x is 4");
} else if x == 5 {
println!("x is 5");
} else if x == 6 {
println!("x is 6");
} else if x == 7 {
println!("x is 7");
} else if x == 8 {
println!("x is 8");
} else if x == 9 {
println!("x is 9");
} else if x == 10 {
println!("x is 10");
} else {
println!("x is not 1-10");
}
}

위의 코드는 조금 복잡합니다.

방법 #1

이는 match()를 통해서 해결할 수 있습니다.

fn main() {
let x = 1;

match x {
1 => println!("x is 1"),
2 => println!("x is 2"),
3 => println!("x is 3"),
4 => println!("x is 4"),
5 => println!("x is 5"),
6 => println!("x is 6"),
7 => println!("x is 7"),
8 => println!("x is 8"),
9 => println!("x is 9"),
10 => println!("x is 10"),
_ => println!("x is not 1-10"),
}
}

방법 #2

match의 값을 변수에 저장하여 사용할 수도 있습니다.

다음과 같은 방법도 사용할 수 있습니다.

fn main(){
let course = "Rust";

let found_course = match course {
"Rust" => "Rust F*ck",
"Java" => "Java",
"C++" => "C Plus Plus",
"C#" => "C Sharp",
_ => "Unknown Language"
};

println!("Course name : {}",found_course);
}