switch문 응용법을 공부하다 where절을 알게 되었다.
일반적으로 switch문에서 복잡한 case(조건)를 지정하기 적합하지 않지만,
where절을 사용하면 이를 일부분 해결할 수 있다.
덤으로 코드 가독성도 좋아진다.
where절은 특정 패턴과 결합하여 조건을 추가하는 역할을 하거나, 조건 추가 or 특정 타입을 제한할 때 사용한다.
예를 살펴보자
switch num {
case let x where x % 2 == 0:
print("짝수 : \(x)")
default:
print("홀수 : \(num)")
}
num 변수를 x 상수에 바인딩한 후(switch문 기본 기능), where 조건절에서 (케이스가) 조건에 해당하는지 여부를 확인할 수 있도록 하고 있다.
for 문에서도 사용할 수 있는데 사용법은 아래와 같다.
let arr = [1, 2, 3, 4, 5, 6]
for i in arr where i % 2 == 0 {
print(i)
}
또한
값 바인딩 패턴, 타입캐스팅 패턴, 메서드, 익스텐션에서도 응용하여 사용할 수 있다.