Sobes.tech
Junior — Middle

É possível definir uma função dentro de uma definição de protocolo?

sobes.tech IA

Resposta da IA

Em Swift, dentro da definição de um protocolo não é possível implementar funções: os protocolos descrevem apenas os requisitos para métodos, propriedades e outros membros que devem ser implementados em classes, estruturas ou enumerações que conformem ao protocolo.

Ou seja, num protocolo, pode-se declarar a assinatura de uma função, mas não o corpo:

protocol MyProtocol {
    func doSomething()
}

A implementação da função doSomething() deve ser fornecida no tipo que herda desse protocolo.

No entanto, com o surgimento de extensões de protocolos (protocol extensions), é possível adicionar uma implementação padrão de métodos, que estará disponível para todos os tipos que conformem ao protocolo:

extension MyProtocol {
    func doSomething() {
        print("Implementação padrão")
    }
}

Assim, diretamente dentro do protocolo, não é possível definir uma função, mas é possível adicionar uma implementação na extensão do protocolo.