Junior — Middle
Lze implementovat protokol s použitím generik v programovacím jazyce?
sobes.tech AI
Odpověď od AI
Ve Swiftu lze používat generika spolu s protokoly, ale samotné protokoly nejsou generické. Místo toho lze vytvářet protokoly s přiřazenými typy (associated types), které umožňují definovat obecné požadavky. To umožňuje implementaci flexibilních a typově bezpečných rozhraní.
Příklad protokolu s přiřazeným typem:
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 způsobem jsou protokoly s přiřazenými typy způsobem, jak implementovat generická rozhraní, podobně jako generika.