Arbeiten mit einer Funktion innerhalb eines Swift-Enumeration

Mit dem gleichen grundlegenden Code, können Sie eine Funktion zu einer Aufzählung in Swift hinzuzufügen. Dies ist etwas, das man nicht entweder in C und vielleicht nicht in anderen Sprachen zu sehen. Es ist eine neue Art und Weise bei Aufzählungen suchen.

Hinzufügen einer einfachen Funktion zu einer Aufzählung

Hier ist die Funktion, die der Aufzählung hinzugefügt wird. Sie können es überall platzieren (außer, natürlich, nicht in der Mitte der Fall):

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

Die Funktion wird benannt enumFunction und es gibt eine Int mit dem Wert von -17. Sie können diese Funktion aus jeder Instanz der Aufzählung zugreifen. Hier ist ein Beispiel:

lassen i = Place.bars.enumFunction ()

Sie können denken, # 147-Warten Sie einen Moment. Diese Aufzählung ist als String eingegeben und so muss es einen String zurückgeben # 148.

Das stimmt, aber Sie beziehen sich nicht auf den Wert der Enumeration zurückgegeben. Sie sind ein Mitglied der Aufzählung zu fragen (nicht einmal eine Instanz der Aufzählung) das Ergebnis zurück enumFunction, die erklärt, wie Int.

Hinzufügen einer switch-Anweisung zu einer Funktion innerhalb einer Aufzählung

Swift Auszählungen werden oft in Verbindung mit Schalter Aussagen. Hier ist eine Funktion innerhalb der Aufzählung zu erstellen, die enthält Schalter Erklärung. Wenn Sie eine Instanz einer Aufzählung (oder nur die Aufzählung selbst), können Sie eine interne Funktion aus einem Element rufen Sie einfach, wie Sie im vorherigen Codeausschnitt sah. Und, wie der vorhergehende Code-Schnipsel, das Ergebnis von der Funktion zurück muss nicht vom gleichen Typ wie der Typ der Aufzählung sein.

Im folgenden Code eine Funktion, kehrt ein Schnur wird auf das Ergebnis einer basierend Schalter Anweisung, die die Elemente der Aufzählung verwendet. Man beachte, dass die Elemente der Schalter keine Strings (man beachte das Fehlen von Anführungszeichen und die Anwesenheit der führenden Perioden in der sind Fall Namen).

Experimentieren Sie mit diesem Code, und Sie werden sehen, dass, wenn Sie den Typ der Aufzählung Int (oder Doppelt oder irgendetwas anderes als String) wird die Funktion noch eine Rückkehr Schnur. Das ist das Ergebnis der Funktion und nicht der Typ, der Aufzählung. Dies ist eine sehr nützliche Technik zu verwenden, und viele Entwickler feststellen, dass es dramatisch den Code reduziert sie zu schreiben. (Jene if-then-else-if Anweisungen innerhalb Schaltergehäuse Aussagen, wie kann verzichtet werden, Schalter Aussagen im Fall Aussagen.)

func enumChoiceFunction () -> String {switch Selbst {case .track1, track2: return "Laufen oder Gehen" Fall .park: return "Gehen, sitzen auf einer Bank, die Fütterung Vögel" default: return "die Natur genießen"}}

Die Abbildung zeigt den Code hier beschrieben.

bild0.jpg

Der Code selbst ist hier zu finden:

image1.jpg
Enum Ort: String {casepark = "Park", pool = "Schwimmbad", Bars = "Kletterstangen", track1 = "Laufbahn", track2 = "Wanderweg" static let Einrichtungen = [Park, Pool, Bars, track1 , track2] func enumFunction () -> Int {return -17} func enumChoiceFunction () -> String {switch Selbst {case .track1, track2: return "laufen oder Gehen" Fall .park: return "Gehen, sitzen auf einer Bank Vögel füttern "default: return" die Natur genießen "}}} lassen i = Place.bars.enumFunction () lassen e = Place.pool.rawValueprintln (Place.pool) sei x = Place.track1.enumChoiceFunction () var Ergebnis: String = "" für diese Ausstattung in Place.facilities {Ergebnis = Ergebnis + amenity.rawValue + ","} println (Ergebnis)

Menü