match
다음은 다른 언어에서는 switch ... case
로 많이 사용되는 match
입니다. 파이썬에는 동일한 문법이 없으므로 if ... else
문으로 구현해 보겠습니다.
파이썬에서는 최신 버전인 3.10 이후부터
match ... case
가 추가되었습니다.
아래 코드는 name
변수에 값에 따라서 서로 다른 결과를 출력하는 코드입니다. 현재 name
변수의 값이 "John"
이므로 "Hello, John!"
가 출력됩니다.
name = "John"
if name == "John":
print("Hello, John!")
elif name == "Mary":
print("Hello, Mary!")
else:
print("Hello, stranger!")
실행 결과
Hello, John!
이렇게 특정 변수의 값에 따라서 다른 행동을 하도록 하는 것이 match
문의 핵심입니다. match
뒤에 값을 비교할 변수를 입력하고, 중괄호 안에서 콤마로 각 경우를 구분해서 표기합니다. name
변수가 "John"
인 경우, "Mary"
인 경우, 그리고 나머지 모든 경우의 세 가지 경우의 수가 있습니다. 나머지 경우를 나타내기 위해서 매칭할 값을 생략하는 _
을 사용합니다. 여기서 name
변수의 값이 "John"
이기 때문에 "Hello, John!"
이 출력됩니다.
fn main() { let name = "John"; match name { "John" => println!("Hello, John!"), "Mary" => println!("Hello, Mary!"), _ => println!("Hello, stranger!"), } }
실행 결과
Hello, John!
loop
와 마찬가지로 match
문도 값을 리턴할 수 있습니다. let <변수명> = match ...
와 같이 선언하면 됩니다. 이때 컴파일러가 match
문의 리턴값으로부터 변수 greet
의 타입을 추론합니다. 또한, 각 조건마다 리턴하는 값들의 타입이 반드시 동일해야 합니다.
fn main() { let name = "John"; let greet = match name { "John" => "Hello, John!", "Mary" => "Hello, Mary!", _ => "Hello, stranger!", }; println!("{}", greet); }
실행 결과
Hello, John!