Match 문
소개
match 문은 하나의 값을 여러 패턴과 비교해 분기하는 제어문입니다.
if / else if 체인보다 분기 의도를 더 명확하게 표현할 때 유용합니다.
현재 Wave의 match는 statement(문) 이며, 값으로 직접 평가되는 expression 형태는 지원하지 않습니다.
즉, var x = match (...) { ... } 같은 형태는 사용할 수 없습니다.
기본 문법
match (값) {
패턴1 => {
// 실행 블록
}
패턴2 => {
// 실행 블록
}
_ => {
// 기본(default) 블록
}
}
문법 규칙:
- 헤더는
match (expr)형태를 사용합니다. - 각 arm은
패턴 => { 블록 }형태를 사용합니다. - arm 본문은 반드시
{ ... }블록이어야 합니다. - arm 사이에는 줄바꿈만 써도 되고,
,또는;를 구분자로 써도 됩니다.
패턴 종류
현재 지원되는 패턴은 아래 3가지입니다.
- 정수 리터럴 패턴
0 => { ... }
1 => { ... }
42 => { ... }
- 식별자 패턴
Off => { ... }
On => { ... }
식별자 패턴은 enum variant 같은 정수 상수로 해석 가능한 값을 대상으로 사용합니다.
- 와일드카드 패턴 (
_)
_ => { ... }
어떤 패턴에도 매칭되지 않았을 때 실행되는 기본 arm입니다.
매칭 대상 타입
현재 구현 기준으로 match의 대상 값은 정수 계열/enum 계열이어야 합니다.
문자열, 부동소수점, 구조체 등은 match 대상으로 사용할 수 없습니다.