Назад к вопросам
VK
Junior — Middle
65
Объясните концепцию использования Generics в протоколах и их применение
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Generics в протоколах позволяют создавать абстрактные и переиспользуемые интерфейсы, которые работают с разными типами данных, сохраняя при этом типобезопасность.
В Swift, например, можно объявить протокол с ассоциированным типом (associatedtype), который действует как placeholder для конкретного типа, определяемого при реализации протокола.
Пример:
protocol Container {
associatedtype Item
var count: Int { get }
subscript(i: Int) -> Item { get }
}
struct IntStack: Container {
var items = [Int]()
mutating func push(_ item: Int) {
items.append(item)
}
var count: Int {
return items.count
}
subscript(i: Int) -> Int {
return items[i]
}
}
Здесь Container — протокол с обобщённым типом Item. IntStack реализует этот протокол, указывая, что Item — это Int. Такой подход позволяет писать гибкий и расширяемый код, где детали типа определяются при реализации, а не в самом протоколе.