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á.