Sobes.tech
Junior — Middle

É possível implementar um protocolo usando genéricos numa linguagem de programação?

sobes.tech IA

Resposta da IA

No Swift, é possível usar genéricos juntamente com protocolos, mas os protocolos em si não são genéricos. Em vez disso, pode-se criar protocolos com tipos associados (associated types), que permitem definir requisitos genéricos. Isso possibilita implementar interfaces flexíveis e seguras em termos de tipos.

Exemplo de protocolo com um tipo associado:

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]
    }
}

Dessa forma, protocolos com tipos associados são uma maneira de implementar interfaces genéricas, semelhantes aos genéricos.