본문 바로가기

IT/Swift

[swift] Binding, Tuple, Where

[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 realValueoptionalValue 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프로토콜도 준수하는 타입에만 해당 익스텐션이 적용될 수 있습니다.