Sobes.tech
Junior — Middle

Kann man ein Protokoll mit Generics in einer Programmiersprache implementieren?

sobes.tech KI

Antwort von AI

In Swift können Generics zusammen mit Protokollen verwendet werden, aber Protokolle selbst sind keine Generics. Stattdessen können Protokolle mit assoziierten Typen (associated types) erstellt werden, die es ermöglichen, generische Anforderungen zu definieren. Dies ermöglicht die Implementierung flexibler und typsicherer Schnittstellen.

Beispiel für ein Protokoll mit einem assoziierten Typ:

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

struct IntStack: Container {
    var items = [Int]()
    mutating func append(_ item: Int) {
        items.append(item)
    }
    var count: Int {
        return items.count
    }
    subscript(i: Int) -> Int {
        return items[i]
    }
}

Auf diese Weise sind Protokolle mit assoziierten Typen eine Möglichkeit, generische Schnittstellen zu implementieren, ähnlich wie Generics.