Sobes.tech
Junior — Middle

Is het mogelijk om een protocol te implementeren met behulp van generics in een programmeertaal?

sobes.tech AI

Antwoord van AI

In Swift kunnen generics samen met protocollen worden gebruikt, maar protocollen zelf zijn niet generiek. In plaats daarvan kunnen protocollen worden gemaakt met geassocieerde types (associated types), die het mogelijk maken om generieke vereisten te definiëren. Dit stelt je in staat om flexibele en type-veilige interfaces te implementeren.

Voorbeeld van een protocol met een geassocieerd type:

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]
    }
}

Op deze manier zijn protocollen met geassocieerde types een manier om generieke interfaces te implementeren, vergelijkbaar met generics.