패턴을 사용하는 switch 문은 if/else 문을 나열한 것과 대체로 동일하다. 하지만 if/else 문이 단계를 나열하는 것과는 달리 ‘이런 종류의 입력에 대해서는 저런 종류의 출력이 이루어진다’는 관점으로 생각할 것을 권장한다.
» 모든 switch 문은 패턴 기반으로 간주될 수 있음
이 절에서는 상수를 사용하는 switch 문과 패턴을 사용하는 switch 문의 동작이 서로 다를 경우에만 두 가지를 구분해서 언급할 것이다. 상수를 사용하는 방식 또한 하나의 패턴으로 볼 수 있기 때문에 모든 유효한 switch 문은 패턴을 사용하는 switch 문이라고 할 수 있으며, 그 동작 방식 또한 완전히 동일하다. 이후 설명할 실행 순서에 관한 부분과 새로운 패턴 변수가 만들어지는 부분은 상수를 사용하는 switch 문에서는 적용되지 않을 뿐이다.
지금 당장은 이 둘을 동일한 문법을 공유하는 별개의 기능이라고 생각하는 것이 유리할 수 있지만, 가능한 한 이 둘을 구분하지 않는 편이 내용을 이해하고 동작 방식을 정확히 이해하는 데 도움이 될 것이다.
Switch 문 내에서 패턴을 사용한 예는 이미 예제 12-3에서 살펴본 바 있다. 이 예제에서는 null과의 매칭 여부를 확인하기 위해서 상수 패턴을 사용했고, 서로 다른 종류의 도형(shape)과의 매칭 여부를 판단하기 위해서 타입 패턴을 사용했다. 패턴의 적용 방식은 case의 레이블 위치에 패턴을 사용하는 매우 단순한 구조인데, 앞으로 설명할 문법 구조 중 하나에 해당된다.