Adopção e conformando uma classe, estrutura, ou enumeração de um protocolo rápido

Video: 130 Utilização de estrutura Enum dentro de classes

Qualquer um dos tipos principais (classes, estruturas e enumerações) pode adotar protocolos. Você pode criar um protocolo que é adotada por qualquer um deles, ou você pode especificar que ele é adoptável apenas por uma classe. Aqui estão exemplos de conformidade com o protocolo básico (MyProtocol).

Conformando uma classe para um protocolo

Muitos dos protocolos utilizados nos quadros de cacau e Cocoa Touch são adotadas por classes nas estruturas em parte porque em Objective-C, os protocolos são normalmente usados ​​apenas com classes. Você será capaz de ir além de classes, mas, quando você está escrevendo código que usa os quadros, você freqüentemente tem que escrever código que está em conformidade com os protocolos para classes.

Aqui estão algumas diretrizes para conformar classes para protocolos:

  • Você especificar que uma classe adota um protocolo na sua declaração, como no seguinte:

    class MyClass: MyProtocol {
  • Se você adotar mais de um protocolo, separe-os com vírgulas, como no seguinte:

    MyClass classe: MyProtocol, MyProtocol2 {
  • Se sua classe é uma subclasse de outra classe, a superclasse aparece em primeiro lugar na lista, como no seguinte:

    class MyClass: MySuperclass, MyProtocol2

    Lembre-se que Swift não suporta herança múltipla, por isso, só pode haver uma superclasse (ou nenhum). Você pode adicionar protocolos para a lista, se necessário.

Se sua classe é uma subclasse de uma classe que adota um protocolo, você deve estar de acordo com esse protocolo em sua própria classe, a menos que a superclasse já está de acordo com isso. Você não especificar este protocolo adotado herdou em sua própria declaração.

Tendo indicado que sua classe adota um protocolo, agora você deve implementar todas as propriedades e métodos necessários. (É possível para significar que alguns métodos e propriedades são opcionais, mas a configuração padrão é que todos eles são necessários.)

Aqui está um exemplo de uma classe que está em conformidade com um protocolo. Observe que myFunc é requerido pelo protocolo, enquanto intval é uma propriedade de classe que não tem nada a ver com o protocolo:

class MyClass: MyProtocol {func myFunc () -gt; Cordas {return "Protocolo 1"} Var intval: Int = 0}


Você pode criar uma variável (com var) Ou constante (com deixei) Que contém uma instância da classe com o seguinte código:

var myClass: MyClass = MyClass ()

Você pode, então, acessar a classe de intval propriedade exemplo, bem como método exigido do protocolo myFunc:

Video: GÊNERO E SEXUALIDADE | I Seminário Queer (Legendas em PORTUGUÊS, INGLÊS e ESPANHOL)

myClass.intVal = 25myClass.myFunc ()

Neste ponto, você não fazem distinção entre os métodos e propriedades exigidas pelo protocolo e aqueles que são simplesmente parte da classe.

Conformando uma estrutura de um protocolo

Uma estrutura (struct) Adota um protocolo da mesma forma como uma classe faz - com um código como este:

Video: Como fazer um PLANO DE ORIENTAÇÃO para prótese total parte 2

struct MyStruct: MyProtocol {func myFunc () -gt; Cordas {return "Protocolo 2"} Var intval: Int = 0var Um = 1Var Dois = 2}

Você pode declarar uma variável que usa a estrutura. Você pode acessar os membros da estrutura, bem como a função que é exigido pelo protocolo:

var myStruct: MyStruct = MyStruct () myStruct.intVal = 15myStruct.myFunc ()

Conformando uma enumeração de um protocolo

Enumerações seguir o mesmo projeto básico. Você pode declarar uma enumeração que adota um protocolo juntamente com os seus próprios dados, como no seguinte código:

enum MyEnum: MyProtocol {func myFunc () -gt; Cordas {return "Protocol 3"} Caso Onecase Twocase Threecase Quatro}

Em seguida, use a enumeração com uma variável no seu código:

var myEnum: MyEnum = MyEnum.TwomyEnum.myFunc ()

Juntando tudo

A listagem a seguir mostra essas amostras juntos.

// Recreio - substantivo: um lugar onde as pessoas podem playprotocol MyProtocol {func myFunc () -gt; String} MyClass classe: MyProtocol {func myFunc () -gt; Cordas {return "Protocolo 1"} Var intval: Int = 0} var myClass: MyClass = MyClass () myClass.intVal = 25myClass.myFunc () MyStruct estrutura: MyProtocol {func myFunc () -gt; Cordas {return "Protocolo 2"} Var intval: Int = 0var Um = 1Var Dois = 2} enum MyEnum: MyProtocol {func myFunc () -gt; Cordas {return "Protocol 3"} Caso Onecase Twocase Threecase Quatro} var myStruct: MyStruct = MyStruct () myStruct.intVal = 15myStruct.myFunc () var myEnum: MyEnum = MyEnum.TwomyEnum.myFunc ()

Publicações relacionadas