Pattern Context

패턴 사용 위치 지도

패턴은 match 안에만 있는 문법이 아니다. 값의 형태를 확인하거나 분해해야 하는 지점마다 같은 원리로 나타나며, 위치에 따라 실패 가능성 규칙이 달라진다.

코드 위치별 패턴 레인

lane map
01

match

여러 갈래를 철저하게 검사한다. 놓친 경우는 컴파일러가 막는다.

02

if let

한 갈래만 중요할 때 짧게 쓴다. 나머지 경우는 직접 챙긴다.

03

while let

매칭이 계속 성공하는 동안 반복한다. 스택 pop 같은 흐름에 맞다.

04

for

반복 값이 들어올 때마다 튜플이나 참조를 즉시 분해한다.

05

let

항상 성공해야 하는 바인딩이다. 요소 개수가 틀리면 타입 오류가 난다.

06

함수 인수

매개변수 자리에서도 패턴으로 값을 분해해 받을 수 있다.

반박 가능성 결정 매트릭스

state matrix
위치
허용되는 패턴
실패 경로
읽는 법
갈래 자리match, if let, while let
반박 가능한 패턴을 둘 수 있다.
다음 갈래, else, 반복 종료로 이동한다.
값이 이 모양이면 실행한다.
바인딩 자리let, 함수 인수
반박 불가능한 패턴이 필요하다.
실패 가능성이 있으면 컴파일 오류가 된다.
값은 반드시 이 모양이어야 한다.
반복 자리for
반복자가 주는 아이템 구조와 맞아야 한다.
아이템 타입이 맞지 않으면 타입 검사에서 걸린다.
매 아이템을 꺼내며 동시에 분해한다.

패턴 선택 점검판

decision board
모든 경우를 다뤄야 한다 match를 선택하고 마지막 갈래까지 의도적으로 설계한다.
한 경우만 중요하다 if let으로 축약하되 무시되는 경우가 괜찮은지 확인한다.
값을 동시에 꺼내야 한다 튜플, 참조, enum 내부 값을 패턴으로 바로 바인딩한다.