Déclarer un protocole à Swift

Un protocole est présenté à Swift par le mot-clé protocole. Il contient la # 173 déclarations qui doivent être mises en œuvre par les types qui adoptent le protocole. Les éléments les plus communs d'un protocole sont les méthodes et propriétés. L'exemple montré ici utilise une propriété unique, mais plusieurs propriétés dans un # 173-protocole sont autorisés. Vous pouvez aussi avoir des propriétés dans les protocoles qui sont adoptées par les classes et les structures.

Fonctions (méthodes) peuvent être adoptées par tous les types qui peuvent adopter des protocoles (qui est, par classes, structures, et # 173-énumérations).

Un protocole est nommé tout comme les autres éléments Swift sont nommés. La déclaration de protocole de base ressemble à ceci:

{} protocole MyProtocol

Comme avec des classes, des structures et énumérations, le nom est en majuscule. En fait, la plupart des objets Swift, sauf pour les propriétés et fonctions sont capitalisés, et ils utilisent interne camelCase (majuscules pour chacun des mots embarqués sauf le premier).

Si le protocole contient une fonction qui doit être mis en œuvre par les types qui l'adoptent, la déclaration de protocole pourrait ressembler à ceci:

protocole MyProtocol {fonc myFunc () -> Chaîne}

Un objet conforme à MyProtocol doivent mettre en œuvre myFunc.

Afin de se concentrer sur la syntaxe de protocoles, les exemples montrent ici exemple plutôt que des procédés type méthodes, qui sont comparables à classe méthodes en Objective-C # 8208. Les méthodes d'instance sont les plus couramment utilisés.

Les protocoles peuvent hériter d'une autre. Ainsi, vous pouvez déclarer une paire de protocoles comme suit:

protocole MyProtocol {fonc myFunc () -> Chaîne} protocole MyProtocol2: MyProtocol {fonc ma_fonction2 () -> Chaîne}

Un objet conforme à MyProtocol doivent mettre en œuvre myFunc. Un objet conforme à MyProtocol2 doivent mettre en œuvre ma_fonction2, mais il doit également mettre en œuvre myFunc car MyProtocol2 hérite de MyProtocol. Si MyProtocol2 se dresse sur son propre (qui est, si elle ne hérite MyProtocol), Les objets qui sont conformes à soit MyProtocol ou MyProtocol2 doivent mettre en œuvre myFunc - mais cette fonction est la même dans les deux protocoles. C'est d'accord. Il suffit de ne pense pas que vous auriez à mettre en œuvre deux fois.

Ne pas utiliser une structure dans laquelle une fonction identique # 8208-nommé (ou des biens) est utilisé dans de multiples protocoles, sauf si vous pensez vraiment. (Un initialisation fonction serait un bon exemple de la bonne utilisation des noms de fonction en double.)

Si vous voulez que votre protocole à être adopté que par les classes, utilisez la classe de mot-clé dans la liste, comme dans l'exemple suivant:

Protocole MyProtocol: classe, MyProtocolToInheritFrom

Notez que la classe est le mot clé que vous utilisez: Il est pas le nom d'une classe.


» » » » Déclarer un protocole à Swift