0Pricing
Swift Academy · 강의

associatedtype과 제네릭 프로토콜

associatedtype 을 사용하는 프로토콜을 정의하고, 이를 준수하는 타입이 연결 타입을 지정하는 방식을 살펴보며, 프로토콜 제약이 있는 제네릭 함수를 사용합니다.

associatedtype과 제네릭 프로토콜은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 3개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

연관 타입이 필요한 이유

프로토콜은 연관 타입을 사용해 제네릭이 될 수 있습니다. 프로토콜을 채택하는 타입은 이 자리 표시자를 구체적인 타입에 연결합니다.

연관 타입을 사용하는 프로토콜

연관 타입 선언은 타입 매개변수처럼 작동합니다. 요구 사항에서는 이를 메서드, 서브스크립트, 프로퍼티에 사용할 수 있습니다.

protocol Container {
    associatedtype Item
    mutating func append(_ item: Item)
    var count: Int { get }
    subscript(index: Int) -> Item { get }
}

구체적인 채택

프로토콜을 채택하는 타입은 해당 타입으로 요구 사항을 구현하여 구체적인 항목 타입(여기서는 정수)을 선택합니다.

struct IntStack: Container {
    // Binds Item == Int implicitly by usage
    private var items: [Int] = []
    mutating func append(_ item: Int) { items.append(item) }
    var count: Int { items.count }
    subscript(index: Int) -> Int { items[index] }
}
var st = IntStack()
st.append(10); st.append(20)
print(st.count, st[1])

제네릭 채택 타입

제네릭 타입은 항목과 요소를 같은 타입으로 연결하여 프로토콜을 채택할 수 있으며, 프로토콜의 제네릭성과 재사용성을 유지합니다.

struct Stack<Element>: Container {
    private var items: [Element] = []
    mutating func append(_ item: Element) { items.append(item) }
    var count: Int { items.count }
    subscript(index: Int) -> Element { items[index] }
    // Here, associatedtype Item == Element
}
var s = Stack<String>()
s.append("hi"); s.append("bye")
print(s.count, s[1])

제네릭에서 프로토콜 사용

함수를 C가 컨테이너인 경우로 제한하십시오. 타입을 고정하지 않고도 C의 항목 타입을 추상적으로 사용할 수 있습니다.

// Generic algorithm operating on any Container
func dumpFirstTwo<C: Container>(_ c: C) {
    // We can talk about C.Item but not assume concrete type
    if c.count >= 2 {
        print("0:", c[0])
        print("1:", c[1])
    } else {
        print("too few elements")
    }
}
dumpFirstTwo(s)    // works with Stack<String>
dumpFirstTwo(st)   // works with IntStack

참고 및 팁

참고:

  • 연관 타입이 있는 프로토콜은 타입으로 직접 사용할 수 없습니다. 제네릭이나 타입 소거를 우선 사용하십시오.
  • 자리 표시자의 이름을 명확하게 지정하십시오(항목, 요소).
  • 프로토콜 채택은 명시적으로 수행할 수도 있고(typealias Item = ...), 시그니처에서 추론하게 할 수도 있습니다.

연관 타입의 의미

빠른 확인: associatedtype은 무엇을 의미합니까?

복습

복습: 프로토콜을 제네릭으로 만들려면 연관 타입을 사용하십시오. 프로토콜을 채택하는 타입은 구체적인 타입을 선택하고, 제네릭 함수는 제약 조건을 통해 모든 채택 타입과 함께 작동할 수 있습니다.

자주 묻는 질문

“associatedtype과 제네릭 프로토콜” 강의는 무료인가요?

네 — “associatedtype과 제네릭 프로토콜” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

“associatedtype과 제네릭 프로토콜”에서 뭘 배우나요?

associatedtype 을 사용하는 프로토콜을 정의하고, 이를 준수하는 타입이 연결 타입을 지정하는 방식을 살펴보며, 프로토콜 제약이 있는 제네릭 함수를 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Swift Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 3개 중 1번째 강의입니다.

“associatedtype과 제네릭 프로토콜” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. associatedtype과 제네릭 프로토콜
  2. 타입 소거 패턴(AnySequence/AnyIterator)
  3. 존재 타입(any P)과 제네릭을 선택하는 기준
← Swift Academy(으)로 돌아가기