Junior — Middle
Може ли да се реализира протокол с използване на генерики в език за програмиране?
sobes.tech AI
Отговор от AI
В Swift можете да използвате генерични типове заедно с протоколи, но самите протоколи не са генерични. Вместо това можете да създавате протоколи с асоциирани типове (associated types), които позволяват дефиниране на общи изисквания. Това позволява реализирането на гъвкави и типово безопасни интерфейси.
Пример за протокол с асоцииран тип:
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]
}
}
По този начин протоколите с асоциирани типове са начин за реализиране на генерични интерфейси, подобно на генериците.