12.4.3 var 패턴
var 패턴(var pattern)은 타입 패턴처럼 보이지만 타입으로 var만을 사용한다. 그래서 var 다음에 바로 식별자가 온다.
someExpression is var x
타입 패턴처럼 새로운 변수가 만들어지기는 하지만, 기존의 타입 패턴과는 달리 아무런 테스트도 수행하지 않으며 항상 매칭이 이루어진 것으로 보기 때문에 새로운 변수는 input과 동일한 컴파일 타임 타입을 가지며 값 또한 동일하다. 타입 패턴과는 달리 var 패턴을 이용하면 input이 null 참조일 경우에도 패턴이 매칭된 것으로 간주한다.
항상 매칭이 이루어지므로 if 문 내에 is 연산자와 함께 var 패턴을 사용하는 것은 다른 패턴을 사용했을 때와 달리 무의미하며, 변수에 값을 할당하지 않고 좀 더 복잡한 표현식을 사용할 때 가끔 요긴하게 사용된다. 하지만 무엇보다 switch 문에서 가드 절(guard clause)(12.6.1절에서 다룰 예정이다.)로 사용할 때 가장 유용하다.
가드 절 없이 var를 사용하는 예를 보이기 위해 예제 12-16에 예제 12-11에서 보여주었던Perimeter 메서드와 유사한 예를 다시 작성해 봤다. 하지만 이번 예제에서는 shape 매개변수가 null인 경우 임의의 도형(shape)을 생성하도록 코드를 수정했다. 그리고 둘레의 길이를 계산할 수 없으면 var 패턴을 이용하여 도형의 타입을 보고하도록 했다. 이제 switch 문에서 null 참조에 대비할 필요가 없으므로 null 참조를 위한 상수 패턴을 사용할 필요가 없다.