이와 같이 코드를 작성하면 y를 생성하는 부분은 수행되지 않을 것 같지만, 실제로 if 문 내에서는 x와 y 모두를 사용할 수 있다. 다만, 이 두 변수들의 값을 확인하는 코드 내에서만 ‘명백한 할당’이 수행될 뿐이다.
논리적으로만 보자면 이러한 동작 방식이 충분히 의미 있어 보인다. 하지만 이런 코드를 처음 봤다면 상당히 놀랄 수밖에 없다. 이번 절을 통해서 알아 두어야 할 내용은 다음과 같다.
• is 표현식 내에서 선언한 패턴 변수의 범위는 해당 표현식을 포함하는 범위로 정해진다.
• 컴파일러가 특정 패턴 변수를 사용하는 것을 허용하지 않는다면, 이는 언어 규칙상 해당 변수에 값이 명확하게 할당되지 않을 수도 있음을 의미한다.
마지막으로 switch 문을 살펴보자.