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

По този начин протоколите с асоциирани типове са начин за реализиране на генерични интерфейси, подобно на генериците.