더북(TheBook)

12.4.3 var 패턴

var 패턴(var pattern)은 타입 패턴처럼 보이지만 타입으로 var만을 사용한다. 그래서 var 다음에 바로 식별자가 온다.

someExpression is var x

타입 패턴처럼 새로운 변수가 만들어지기는 하지만, 기존의 타입 패턴과는 달리 아무런 테스트도 수행하지 않으며 항상 매칭이 이루어진 것으로 보기 때문에 새로운 변수는 input과 동일한 컴파일 타임 타입을 가지며 값 또한 동일하다. 타입 패턴과는 달리 var 패턴을 이용하면 inputnull 참조일 경우에도 패턴이 매칭된 것으로 간주한다.

항상 매칭이 이루어지므로 if 문 내에 is 연산자와 함께 var 패턴을 사용하는 것은 다른 패턴을 사용했을 때와 달리 무의미하며, 변수에 값을 할당하지 않고 좀 더 복잡한 표현식을 사용할 때 가끔 요긴하게 사용된다. 하지만 무엇보다 switch 문에서 가드 절(guard clause)(12.6.1절에서 다룰 예정이다.)로 사용할 때 가장 유용하다.

가드 절 없이 var를 사용하는 예를 보이기 위해 예제 12-16에 예제 12-11에서 보여주었던Perimeter 메서드와 유사한 예를 다시 작성해 봤다. 하지만 이번 예제에서는 shape 매개변수가 null인 경우 임의의 도형(shape)을 생성하도록 코드를 수정했다. 그리고 둘레의 길이를 계산할 수 없으면 var 패턴을 이용하여 도형의 타입을 보고하도록 했다. 이제 switch 문에서 null 참조에 대비할 필요가 없으므로 null 참조를 위한 상수 패턴을 사용할 필요가 없다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.