Junior — Middle
Czy można zaimplementować protokół z użyciem generyków w języku programowania?
sobes.tech AI
Odpowiedź od AI
W Swift można używać generyków razem z protokołami, ale same protokoły nie są generyczne. Zamiast tego można tworzyć protokoły z typami powiązanymi (associated types), które pozwalają na określenie ogólnych wymagań. To umożliwia implementację elastycznych i bezpiecznych typów interfejsów.
Przykład protokołu z typem powiązanym:
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]
}
}
W ten sposób protokoły z typami powiązanymi są sposobem na implementację elastycznych interfejsów, podobnych do generyków.