12.6.1 가드 절
각각의 case 레이블은 표현식(expression)으로 나타낸 가드 절을 가질 수 있다.
case pattern when expression:
여기서 표현식은 if 문의 조건문과 마찬가지로 불값2으로 평가된다. case 문의 본문은 이 표현식이 true로 평가될 때만 실행된다. 이 표현식 내에서 다른 패턴을 사용할 수도 있으며, 추가적인 패턴 변수를 생성할 수도 있다.
앞서 설명한 명세에 대한 내용을 구체적인 예를 통해 살펴보자. 다음은 피보나치 수열에 대한 명세다.
• fib(0) = 0
• fib(1) = 1
• fib(n) = fib(n-2) + fin(n-1), n > 1인 모든 n에 대해
11장에서는 튜플을 이용하여 피보나치 수열을 생성하는 예를 살펴본 바 있는데, 이는 시퀀스를 생성해야 할 때 매우 깔끔한 방식이다. 그러나 단순히 함수를 작성하는 것만을 생각한다. 앞서 살펴본 정의를 패턴과 가드 절을 이용하는 swtich 문을 이용하여 다음과 같이 코드로 옮겨 볼 수 있다.
2 혹은 암시적으로 불값으로 변환할 수 있는 값이거나 true 연산자를 제공하는 타입의 값일 수도 있다. 이러한 요건은 if 문과 완전히 동일하다.