Sobes.tech
Junior — Middle

Peut-on définir une fonction à l'intérieur de la définition d'un protocole?

sobes.tech IA

Réponse de l'IA

En Swift, il est impossible d’implémenter des fonctions directement dans la définition d’un protocole : les protocoles décrivent uniquement les exigences concernant les méthodes, propriétés et autres membres qui doivent être implémentés dans des classes, structures ou énumérations conformes au protocole.

Autrement dit, dans un protocole, vous pouvez déclarer la signature d’une fonction, mais pas son corps :

protocol MyProtocol {
    func doSomething()
}

L’implémentation de la fonction doSomething() doit être fournie dans le type qui adopte ce protocole.

Cependant, avec l’apparition des extensions de protocoles (protocol extensions), il est possible d’ajouter une implémentation par défaut des méthodes, accessible à tous les types conformes au protocole :

extension MyProtocol {
    func doSomething() {
        print("Implémentation par défaut")
    }
}

Ainsi, il n’est pas possible de définir une fonction directement dans le protocole, mais on peut ajouter une implémentation dans l’extension du protocole.