Travailler avec une fonction à l'intérieur d'une énumération rapide

Avec le même code de base, vous pouvez ajouter une fonction à une énumération à Swift. Ceci est quelque chose que vous ne l'avez pas vu en C et peut-être pas dans d'autres langues soit. Il est une nouvelle façon de regarder les énumérations.

Sommaire

Ajout d'une fonction simple à une énumération

Voici la fonction qui est ajouté à l'énumération. Vous pouvez le placer n'importe où (à l'exception, bien sûr, pas dans le milieu de la cas):

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

La fonction est nommé enumFunction et il renvoie un Int avec la valeur de -17. Vous pouvez accéder à cette fonction à partir de toute instance de l'énumération. Voici un exemple:




Soit I = Place.bars.enumFunction ()

Vous pensez peut-être, “ Attendez un instant. Ce recensement est entré comme String et donc il doit renvoyer une chaîne ”.

Cela est vrai, mais vous n'êtes pas référence à la valeur retournée par l'énumération. Vous demandez à un membre de l'énumération (même pas une instance de l'énumération) pour retourner le résultat de enumFunction, qui est déclarée Int.

Ajout d'une instruction switch pour une fonction à l'intérieur d'une énumération

Swift énumérations sont souvent utilisés en combinaison avec interrupteur déclarations. Voici une fonction à placer dans l'énumération qui contient une interrupteur déclaration. Lorsque vous avez une instance d'une énumération (ou tout simplement l'énumération elle-même), vous pouvez appeler une fonction interne d'un élément comme vous avez vu dans l'extrait de code précédent. Et, comme l'extrait de code précédent, le résultat retourné par la fonction ne doit pas être du même type que le type de l'énumération.

Dans le code suivant une fonction qui renvoie un Chaîne est basée sur le résultat d'une interrupteur déclaration qui utilise les éléments de l'énumération. On notera que les éléments de la interrupteur ne sont pas des chaînes (à noter l'absence de guillemets et de la présence des périodes leaders dans le cas noms).

Expérimentez avec ce code, et vous verrez que si vous définissez le type de l'énumération Int (ou Double ou autre que String) quoi que ce soit la fonction retournera toujours un Chaîne. Cela est le résultat de la fonction et non du type de l'énumération. Ceci est une technique très utile à utiliser, et de nombreux développeurs trouvent qu'il réduit considérablement le code qu'ils ont à écrire. (Ceux if-then-else-if instructions à l'intérieur cas de commutation déclarations peuvent être omises, comme on peut interrupteur des énoncés prospectifs au cas déclarations.)

FUNC enumChoiceFunction () -> Chaîne {switch auto {case .track1, track2: return "course ou la marche" cas Espace vert: return "Marcher, assis sur un banc, nourrir les oiseaux" par défaut: return "profiter de la nature"}}

La figure montre le code décrit ici.

image0.jpg

Le code lui-même est fourni ici:

image1.jpg
énumération place: "une piste de marche" String {de casepark = "parc", piscine = "piscine", des bars = "escalade barres", track1 = "piste de course", track2 = installations loués statiques = [parc, piscine, des bars, track1 , track2] FUNC enumFunction () -> Int -17 {return} FUNC enumChoiceFunction () -> Chaîne {switch auto {case .track1, track2: return "courir ou marcher" cas Espace vert: return "Marcher, assis sur un banc , nourrir les oiseaux "par défaut: return" profiter de la nature "}}} i = laisser Place.bars.enumFunction () soit e = Place.pool.rawValueprintln (Place.pool) soit x = Place.track1.enumChoiceFunction () var result: String = "" pour équipement dans Place.facilities {result = résultat + amenity.rawValue + ","} println (résultat)

» » » » Travailler avec une fonction à l'intérieur d'une énumération rapide