Je souhaite créer un protocole qui n'est adopté que par une classe spécifique et ses sous-classes dans swift. Je sais que je peux utiliser des extensions de protocole comme celui-ciLe protocole Swift n'est implémenté que par des classes spécifiques
protocol PeopleProtocol: class {
}
extension PeopleProtocol where Self: People {
}
Mais la méthode qui va aller dans mon protocole sera une méthode init
qui sera mis en œuvre par une classe ou son subClasess et ne renverra que certains types d'objets spécifiques .
quelque chose comme ça.
protocol PeopleProtocol: class {
init() -> People
}
ou je peux faire quelque chose comme ça
extension PeopleProtocol where Self : People {
init()
}
Mais il y a deux problèmes,
Dans la première approche si je mets une méthode d'initialisation dans le protocole, il don Ne me permettez pas de mettre une déclaration de retour là comme
-> People
dans la première approche. Dans la seconde approche, je dois fournir un corps de fonction dans les extensions de protocole, donc cette chose sera hors de question, car je ne sais pas quel type spécifique retourner pour cette implémentation générale.
Donc suggestions comment je peux appeler une méthode d'initialisation et faire soit:
- Que le protocole (pas d'extension de protocole) à mettre en œuvre que par et ses sous-classe spécifique.
- Ou renvoyer une instance d'un certain à partir de la méthode d'extension de protocole sans donner son corps.
Fondamentalement, les méthodes 'init' n'ont aucune valeur de retour. – vadian
Vrai, c'est pourquoi je veux ajouter une restriction à la première place que cette méthode ne sera implémentée que par un type de classe spécifique. – Madu
désolé ne vous a pas obtenu, que faites-vous les hommes par ** utiliser 'Self 'dans le corps plutôt que la super classe le protocole est limité à **. – Madu