É 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.