Trabajar con una función dentro de una enumeración rápida

Con el mismo código básico, puede agregar una función a una enumeración en Swift. Esto es algo que no has visto en C y tal vez no en otros idiomas tampoco. Es una nueva forma de ver las enumeraciones.

Adición de una función simple de una enumeración

Esta es la función que se agrega a la enumeración. Usted puede colocar en cualquier lugar (excepto, por supuesto, no en el medio de la caso):

 func enumFunction () -> Int {return -17}

La función se llama enumFunction y devuelve una Int con el valor de -17. Puede acceder a esta función desde cualquier instancia de la enumeración. Aquí está un ejemplo:


Sea I = Place.bars.enumFunction ()

Usted puede estar pensando, " Espere un momento. Esa enumeración se escribe como string y lo que debe devolver una cadena ".

Eso es cierto, pero no se está refiriendo al valor devuelto por la enumeración. Usted está pidiendo un miembro de la enumeración (ni siquiera una instancia de la enumeración) para devolver el resultado de enumFunction, que está declarada como Int.

Adición de una sentencia switch para una función dentro de una enumeración

Enumeraciones Swift se utilizan a menudo en combinación con interruptor declaraciones. Aquí es una función de colocar dentro de la enumeración que contiene un interruptor comunicado. Cuando usted tiene una instancia de una enumeración (o simplemente la enumeración en sí), puede llamar a una función interna de un elemento tal como se vio en el fragmento de código anterior. Y, al igual que el fragmento de código anterior, el resultado devuelto por la función no necesita ser del mismo tipo que el tipo de la enumeración.

En el siguiente código de una función que devuelve un Cuerda se basa en el resultado de una interruptor declaración de que utiliza los elementos de la enumeración. Tenga en cuenta que los elementos de la interruptor no son cadenas (tenga en cuenta la ausencia de comillas y la presencia de los principales períodos de la caso nombres).


Experimente con este código, y verá que si establece el tipo de la enumeración de Int (o Doble o que no sean String) nada la función todavía devolverá un Cuerda. Ese es el resultado de la función y no el tipo de la enumeración. Esta es una técnica muy útil para usar, y muchos desarrolladores encontrar que reduce drásticamente el código que tienen que escribir. (Aquellas if-then-else-if sentencias dentro caso del interruptor declaraciones se pueden omitir, como puede interruptor declaraciones prospectivas dentro caso declaraciones).

func enumChoiceFunction () -> Cadena {interruptor auto {case .track1, pista2: return "correr o caminar" caso .park: return "Caminando, sentado en un banco, la alimentación de las aves" default: return "disfrutar de la naturaleza"}}

La figura muestra el código descrito aquí.

imagen0.jpg

El código en sí se ofrece aquí:

image1.jpg
enum Lugar: "pista caminando" String {casepark = "parque", piscina = "piscina", bares = "escalar las rejas", pista1 = "pista de atletismo", pista2 = instalaciones vamos estáticas = [parque, piscina, bares, pista1 , pista2] func enumFunction () -> Int {return -17} enumChoiceFunction func () -> Cadena {interruptor auto {case .track1, pista2: return "correr o caminar" caso .park: return "Caminando, sentado en un banco , la alimentación de las aves "default: return" disfrutar de la naturaleza "}}} dejar i = Place.bars.enumFunction () Sea E = Place.pool.rawValueprintln (Place.pool) sea x = Place.track1.enumChoiceFunction () var result: String = "" para equipamiento en Place.facilities {resultado = resultado + amenity.rawValue + ","} println (resultado)



» » » » Trabajar con una función dentro de una enumeración rápida