Sobes.tech
Назад к вопросам
Junior — Middle
66

Можно ли реализовать протокол с использованием дженериков в языке программирования?

Компании, где спрашивали
iviivi

Ответ от нейросети

sobes.tech 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]
    }
}

Таким образом, протоколы с ассоциированными типами — это способ реализовать обобщённые интерфейсы, похожие на дженерики.