예제 12-17 패턴과 재귀를 이용하여 피보나치 수열 구현 ▶ FibonacciSwitch.cs
static int Fib(int n)
{
switch (n)
{
➊
case 0: return 0;
case 1: return 1;
case var _ when n > 1: return Fib(n - 2) + Fib(n - 1); ----- var 패턴과 가드 절을 이용하여 재귀 부분을 구현
➋
default: throw new ArgumentOutOfRangeException(
nameof(n), "Input must be non-negative");
}
}
➊ 상수 패턴을 이용하여 기본 정의를 구현
➋ 패턴 매칭이 이루어지지 않았다면 입력값이 유효하지 않은 것임
이 예제는 실전에서 절대로 사용하지 않을 만큼 비효율적이지만, 명세를 직접 코드로 변환하는 방법을 명확히 보여준다.
이 예제의 가드 절에서는 패턴 변수를 사용할 필요가 없기 때문에 버림 식별자(_)를 사용했다. 대부분의 경우 패턴은 새로운 패턴 변수를 생성하고, 이렇게 생성된 패턴 변수는 가드 절에서 사용되거나 case의 본문에서 사용되곤 한다.