Junior — Middle
Megvalósítható egy protokoll generikusok használatával egy programozási nyelvben?
sobes.tech MI
Válasz az MI-től
Swiftben generikusokat lehet protokollokkal együtt használni, de a protokollok önmagukban nem generikusak. Ehelyett létrehozhatunk kapcsolt típusokat (associated types) tartalmazó protokollokat, amelyek lehetővé teszik általános követelmények meghatározását. Ez lehetővé teszi rugalmas és típusbiztos interfészek megvalósítását.
Példa egy kapcsolt típusú protokollra:
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]
}
}
Így a kapcsolt típusokat tartalmazó protokollok egy módja annak, hogy általános interfészeket valósítsunk meg, hasonlóan a generikusokhoz.