Sobes.tech
Junior — Middle

Je možné implementovať protokol s použitím generík v programovacom jazyku?

sobes.tech AI

Odpoveď od AI

V Swiftu je možné používať generiká spolu s protokolmi, ale samotné protokoly nie sú generické. Namiesto toho je možné vytvárať protokoly s priradenými typmi (associated types), ktoré umožňujú definovať všeobecné požiadavky. To umožňuje implementovať flexibilné a typovo bezpečné rozhrania.

Príklad protokolu s priradeným typom:

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

Týmto spôsobom sú protokoly s priradenými typmi spôsobom, ako implementovať generické rozhrania, podobne ako generiká.