Swift의 Associated Type

  • Swift의 Associated Type에 대해 알기 위해서는 기본적으로 Protocol을 알고 있어야합니다.
  • Associated Type은 Protocol을 Generic 하게 사용할수 있게 도와주는데요.
  • Protocol에서 사용되는 타입을 위한 플레이스홀더 역할을 합니다.
protocol ItemStoring {
    associatedtype DataType

    var items: [DataType] { get set }
    mutating func add(item: DataType)
}
  • ItemStoring 프로토콜을 예시로 시작해봅시다.
  • 여기서 DataType이 Associated Type입니다.
  • 이를 items와 add 함수가 사용하고 있는데요.
extension ItemStoring {
    mutating func add(item: DataType) {
        items.append(item)
    }
}
  • DataType을 사용해 extension에서 add 함수 기본 구현을 할 수도 있습니다.
struct NameDatabase: ItemStoring {
    var items = [String]()
}
  • Associated Type의 장점을 이제 볼 수 있는데요.
  • ItemStoring 프로토콜을 준수하는 struct를 만들어봤습니다.
  • 다음과 같이만 작성해도 DataType이 String임을 Swift는 알고, 이에 맞게 코드가 작동합니다.

참고