값의 구조에 따라 분기하는 match 문을 배웁니다.
match는 단순 값뿐 아니라 리스트와 딕셔너리의 구조를 패턴으로 분해해 분기합니다. 위에서부터 첫 패턴 하나가 실행되며 case _는 어떤 패턴에도 맞지 않은 기본 경우입니다.
command는 세 값짜리 튜플이라 첫 case의 시퀀스 패턴과 비교됩니다. 첫 자리는 문자열 move와 같은지 값으로 확인하고, 나머지 두 자리의 x와 y는 비교 대신 3과 5를 담는 캡처 이름이 되어 (3, 5)로 이동이 출력됩니다. 첫 case가 맞았으므로 길이가 하나인 quit 패턴과 기본 case _는 검사하지 않습니다.
case에서 |는 여러 패턴 중 하나를 뜻하고 if guard를 붙여 추가 조건을 검사할 수 있습니다. 변수 이름 패턴은 값을 비교하는 대신 새 이름으로 캡처합니다.
명령, 이벤트, 파싱 결과처럼 형태가 제한된 데이터를 처리할 때 유용하며 공개 입력은 match 전에 기본 검증도 수행합니다.
case name은 문자열 'name' 비교가 아니라 모든 값을 name에 담는 캡처 패턴이므로 뒤 case를 가릴 수 있습니다.
직접 바꿔보세요delete 명령과 알 수 없는 명령을 추가해보세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.