SQL에 익숙한 사람들은 where절을 아마도 그렇게? 생각할 것이다. 그래서 선입관이나 고정관념은 무서운 것이다. 항상 조심하고 경계하자.
책에 의하면
Swift으 where절은 특정 패턴과 결합하여 조건을 추가하는 역할을 한다고 되어 있다. 어떤 조건을 더 추가하고 싶을 때나 특정 타입에 제한을 두고 싶을 때 다양한 용도로 사용할 수 있다.
주 용도는 다음과 같다.
- 패턴과 결합하여 조건 추가
- 타입에 대한 제약 추가
<예시>
if let index = navigationController?.viewControllers.index(where: { $0.isKind(of: ListViewController.self) }) {
self.navigationController?.viewControllers.insert(vc, at: index + 1)
navigationController?.popToViewController(vc, animated: true)
}
<또다른 예시>
//옵셔널 패턴과 결합한 예
let arrayOfOptionalInts: [Int?] = [nil, 2, 3, nil, 5]
for case let number? in arrayOfOptionalInts where number > 2 {
print("Found a \(number)")
}
//Found a 3
//Found a 5
이 외에도 프로토콜 익스텐션에 where절을 사용하면 이 익스텐션이 특정 프로토콜을 준수하는 타입에만 적용될 수 있도록 제약을 줄 수 있다. -> 익스텐션이 적용된 프로토콜을 준수하는 타입 중 where절 뒤에 제시되는 프로토콜도 준수하는 타입만 익스텐션이 적용되도록 제약을 줄 수 있다는 뜻.
책을 보니, 값 바인딩, 와일드카드 패턴과 where절을 활용하는 방법,
옵셔널 패턴과 where절의 활용 방법,
타입캐스팅 패턴과 where절의 활용방법,
표현 패턴과 where절의 활용 방법,
where절을 활용한 프로토콜 익스텐션의 프로토콜 준수 제약 추가 방법,
where절을 활용한 타입 매개변수와 연관 타입의 타입 제약 추가 방법,
where절을 활용한 제네릭 타입의 연관 타입 제약 추가 방법 등이 있다.
선뜻 와 닿지 않는 부분들도 있기때문에 지속적으로 사용하면서 익숙해질때까지 다뤄바야겠다. 책의 내용으로 갈무리.
where절은 다른 패턴과 조합하면 원하는 추가 요구사항을 자유롭게 더할 수 있으며, 익스텐션과 제네릭에 사용함으로써 프로토콜 또는 타입에 대한 제약을 추가해줄 수도 있습니다. 조건 구문이나 논리 연산으로 구현한 코드보다는 훨씬 명확하고 간편하게 사용할 수 있다.
'프로그래밍 > Swift' 카테고리의 다른 글
Swift 클로저, 다시 한번 정리 (0) | 2020.11.12 |
---|---|
@objc (0) | 2020.11.12 |
Swift ForEach 사용 예 (0) | 2020.11.12 |
iOS14, UIPageControl의 변화 그리고 삽질. (0) | 2020.10.20 |
Swift REPL 사용방법 (0) | 2019.08.21 |