Junior — Middle
Da li je moguće implementirati protokol koristeći generike u programskom jeziku?
sobes.tech АИ
Одговор од АИ
У 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]
}
}
На овај начин, протоколи са асоцираним типовима су начин за имплементацију генераких интерфејса, слично као и генераци.