Declarando um protocolo em rápido

Um protocolo é introduzido em Swift pela palavra-chave protocolo. Ele contém as declarações que devem ser implementadas pelos tipos que adotam o protocolo. Os elementos mais comuns de um protocolo são métodos e propriedades. O exemplo mostrado aqui utiliza uma única propriedade, mas são permitidas várias propriedades em um protocolo. Você também pode ter propriedades em protocolos que são adotadas por classes e estruturas.

Funções (métodos) pode ser adotado por todos os tipos que pode adotar protocolos (isto é, por classes, estruturas e enumerações).

Um protocolo é chamado assim como outros elementos Swift são nomeados. A declaração protocolo básico se parece com isso:

MyProtocol protocolo {}

Tal como acontece com as classes, estruturas e enumerações, o nome é capitalizado. Na verdade, a maioria dos objetos Swift excepto para as propriedades e funções são capitalizados, e eles usam interna camelCase (letras maiúsculas para cada uma das palavras contidas, exceto a primeira).

Se o protocolo contém uma função que deve ser implementada por tipos que o adotam, a declaração protocolo pode ter esta aparência:

MyProtocol protocolo {func myFunc () -gt; Corda}

Um objeto em conformidade com MyProtocol deve implementar myFunc.



A fim de se concentrar sobre a sintaxe de protocolos, os exemplos aqui mostram instância métodos em vez de tipo métodos, que são comparáveis ​​aos classe métodos em Objective-C. métodos de instância são mais comumente usados.

Protocolos podem herdar um do outro. Assim, você pode declarar um par de protocolos como segue:

MyProtocol protocolo {func myFunc () -gt; String} protocolo MyProtocol2: MyProtocol {myFunc2 func () -gt; Corda}

Um objeto em conformidade com MyProtocol deve implementar myFunc. Um objeto em conformidade com MyProtocol2 deve implementar myFunc2, mas também deve implementar myFunc Porque MyProtocol2 herda de MyProtocol. E se MyProtocol2 vale por si só (ou seja, se ele não herda de MyProtocol), Os objetos que estão em conformidade com qualquer MyProtocol ou MyProtocol2 deve implementar myFunc - mas esta é a mesma função em ambos os protocolos. Esta certo. Só não acho que você tem para implementá-lo duas vezes.

Não use uma estrutura na qual uma função idêntica-nomeado (ou propriedade) é usado em vários protocolos a menos que você realmente quer dizer isso. (A nisso função seria um bom exemplo do uso adequado da função nomes duplicados.)

Se você quiser que o seu protocolo a ser adotada apenas por classes, use a classe palavra-chave na lista, como no seguinte:

Protocolo MyProtocol: classe, MyProtocolToInheritFrom

Observe que a classe é a palavra-chave que você usa: Não é o nome de uma classe.


Publicações relacionadas