Adoptar y conformando una clase, estructura o enumeración a un protocolo rápido

Cualquiera de los principales tipos (clases, estructuras y enumeraciones) puede adoptar protocolos. Se puede crear un protocolo que es adoptada por cualquiera de ellos, o puede especificar que es adoptable solamente por una clase. Estos son ejemplos de ajuste al protocolo básico (MyProtocol).

Conforme una clase a un protocolo

Muchos de los protocolos utilizados en los marcos de Cacao y táctiles son adoptados por las clases en los marcos en parte porque en Objective-C, los protocolos se utilizan normalmente sólo con las clases. Usted será capaz de ir más allá de las clases, pero, cuando estás escribiendo código que utiliza los marcos, podrás frecuencia tiene que escribir código que se ajusta a los protocolos para las clases.

Aquí hay algunas pautas a clases conforme a los protocolos:

  • Se especifica que una clase adopta un protocolo en su declaración, como en el siguiente:

    clase MiClase: {MyProtocol
  • Si usted adopta más de un protocolo, separar con comas, como en el siguiente:

    Class MiClase: MyProtocol, MyProtocol2 {
  • Si la clase es una subclase de otra clase, su superclase aparece primero en la lista, como en el siguiente:

    Class MiClase: MySuperclass, MyProtocol2

    Recuerde que Swift no soporta la herencia múltiple, por lo que sólo puede haber una superclase (o ninguno). Puede añadir protocolos a la lista si es necesario.

Si la clase es una subclase de una clase que adopta un protocolo, que debe ajustarse a ese protocolo en su propia clase a menos que la superclase ya se ajustaba a ella. No se especifica este protocolo adoptado heredada en su propia declaración.

Después de haber indicado que su clase adopta un protocolo, ahora debe implementar todas las propiedades y métodos necesarios. (Es posible indicar que algunos métodos y propiedades son opcionales, pero la configuración por defecto es que todos ellos son necesarios.)

Aquí está un ejemplo de una clase que se ajusta a un protocolo. Tenga en cuenta que myFunc es requerido por el protocolo, mientras intval es una propiedad de clase que no tiene nada que ver con el protocolo:

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

Puede crear una variable (con var) O constante (con dejar) Que contiene una instancia de la clase con este código:

Video: Esoteric Agenda, Plan Esotérico,Documental (de los creadores de Kymatica)

var myClass: MyClass = MyClass ()

A continuación, puede acceder a la clase de intval propiedad de instancia así como el método requerido por el protocolo myFunc:

myClass.intVal = 25myClass.myFunc ()

En este punto, se hace ninguna distinción entre los métodos y las propiedades requeridas por el protocolo y los que son simplemente parte de la clase.

Conformando una estructura a un protocolo

Una estructura (struct) Adopta un protocolo de la misma manera como lo hace una clase - con código como el siguiente:

struct MyStruct: MyProtocol {func myFunc () -gt; Cadena {return "Protocolo 2"} Intval var: Int = 0var Uno = 1VAR Dos = 2}

Se puede declarar una variable que utiliza la estructura. A continuación, puede acceder a los miembros de la estructura, así como la función que se requiere por el protocolo:

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

Conforme una enumeración a un protocolo

Enumeraciones siguen el mismo diseño básico. Se puede declarar una enumeración que adopta un protocolo junto con sus propios datos, como en el código siguiente:

enum MyEnum: MyProtocol {func myFunc () -gt; Cadena {return "Protocolo 3"} Onecase caso Twocase Threecase Cuatro}

A continuación, utilice la enumeración con una variable en el código:

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

Poniendolo todo junto

El siguiente listado muestra estas muestras juntas.

Video: INSTALACIÓN E IMPLEMENTOS PARA LA CRIANZA DE CUYES

// Zona de juegos - sustantivo: un lugar donde la gente puede playprotocol MyProtocol {func myFunc () -gt; Cuerda} class MiClase: MyProtocol {func myFunc () -gt; Cadena {return "Protocolo 1"} Var intval: Int = 0} myClass var: MyClass = MyClass () myClass.intVal = 25myClass.myFunc () MyStruct struct: MyProtocol {func myFunc () -gt; Cadena {return "Protocolo 2"} Intval var: Int = 0var Uno = 1VAR Dos = 2} enum MyEnum: MyProtocol {func myFunc () -gt; Cadena {return "Protocolo 3"} Caso Onecase Twocase Threecase Cuatro} myStruct var: MyStruct = MyStruct () myStruct.intVal = 15myStruct.myFunc () MyEnum var: MyEnum = MyEnum.TwomyEnum.myFunc ()
Artículos Relacionados