[swift 기초문법] - 값 바인딩(Binding), Where 절
값 바인딩 패턴(Value-Binding Pattern)이란
변수 또는 상수의 이름에 매치된 값을 할당하는 것입니다.
크게는 식별자 바인딩과 옵셔널 바인딩을 들 수 있습니다.
식별자 바인딩은 튜플로 예시를 들어보겠습니다.
let sampleTuple = ("sample", 77)
switch sampleTuple {
case let (category, number) : print("Category is \(category), Number is \(number)") // Category is sample, Number is 77
}
옵셔널 바인딩 예
let optionalValue: Int? = 0
if let realValue = optionalValue {
print(realValue) //0
}
guard let realValue = optionalValue else { return }
print(realValue) //0
튜플이란 (Tuple)
소괄호 내에 쉽표로 분리되는 리스트입니다.
딕셔너리의 key가 없는 버전이라고 보셔도 됩니다만 CollectionType은 아닙니다.
var sampleTuple = (777, "Good Good", true)
tuple.0//777
tuple.1//"Good Good"
tuple.2//true
Where 절
switch문에서 where절 사용 예
let value = 3
switch value {
case value where value > 2: print("upper 2")
default: print("same or down 2")
}
//upper 2
for 문에서 where절 사용 예
let array: [Int?] = [nil, 2, 3]
for case let num? in array where num > 2 {
print("num is \(num)")
}
익스텐션의 프로토콜 준수 제약 추가
익스텐셩에 where절을 사용하여 특정 프로토콜을 준수하는 타입에만 적용될 수 있도록 제약을 줄 수 있습니다.
콤바(,)를 사용하여 제약을 추가할 수 있습니다.
protocol TestProtocol {}
protocol SecondProtocol {}
extension TestProtocol where Self: SecondProtocol, Self: Collection {} //TestProtocol를 준수하는 타입 중 SecondProtocol프로토콜과 Collection프로토콜도 준수하는 타입에만 해당 익스텐션이 적용될 수 있습니다.
'IT > Swift' 카테고리의 다른 글
SwiftUI 시작하기 (0) | 2019.10.14 |
---|---|
[swift] throw, do-catch, rethrows, defer (0) | 2019.10.09 |
[swift] Wildcard, Nested Types (0) | 2019.10.05 |
[swift] POP (Protocol Oriented Language) (0) | 2019.09.30 |
[swift] Protocol Default Implementations, Associated Type (0) | 2019.09.28 |