Latest web development tutorials

Swift Aufzählung

Enumeration ist einfach ein Datentyp, aber dies ist die einzige Datentyp, der eine kundenspezifische Daten enthält, die eine Reihe gemeinsamer Merkmale der Datenerhebung ist.

Swift Aufzählung Struktur ähnlich Objective C und C, Enumerationsfunktionen:

  • Es ist in der Klasse deklariert, die Klasse ihren Wert durch die Instanzierung zugreifen können.

  • Enum kann auch einen Konstruktor (initializers) definieren eine erste Mitglied Wert zu liefern; ihre Funktionalität in der ursprünglichen Implementierung Basis erweitern.

  • Sie können Protokoll (Protokolle) beobachten eine Standardfunktion zur Verfügung zu stellen.

Grammatik

Swift Enum Schlüsselwort wird verwendet, zu schaffen und ihre gesamte Definitionen in einem Paar Klammern gesetzt aufzuzählen:

enum enumname {
   // 枚举定义放在这里
}

Zum Beispiel definieren wir den nächsten Tag der Woche Aufzählung:

import Cocoa

// 定义枚举
enum DaysofaWeek {
    case Sunday
    case Monday
    case TUESDAY
    case WEDNESDAY
    case THURSDAY
    case FRIDAY
    case Saturday
}

var weekDay = DaysofaWeek.THURSDAY
weekDay = .THURSDAY
switch weekDay
{
case .Sunday:
    print("星期天")
case .Monday:
    print("星期一")
case .TUESDAY:
    print("星期二")
case .WEDNESDAY:
    print("星期三")
case .THURSDAY:
    print("星期四")
case .FRIDAY:
    print("星期五")
case .Saturday:
    print("星期六")
}

Die obige Programmausführung Ausgabe ist:

星期四

Wert (gemäß der Definition in der Aufzählung von Sunday , Monday , …… und Saturday ) sind die Mitglieder der Enumerationswerte (oder Mitglied). case Keywords Mitglieder repräsentieren eine neue Linie der Wert definiert wird.

Anmerkung: C und Objective-C und verschiedenen Enumerationsmember Swift wird kein Standard ganzzahliger Wert gegeben werden erstellt wird. In dem obigen DaysofaWeek Beispiel Sunday , Monday , …… und Saturday wird nicht implizit den Wert zugewiesen 0 , 1 , …… und 6 . Stattdessen selbst haben diese Elemente eine vollständige Aufzählung Werte , die bereits klar definiert sind DaysofaWeek Typ.

var weekDay = DaysofaWeek.THURSDAY 

weekDay Typ es sein kann DaysofaWeek geschlossen , wenn ein Wert initialisiert werden kann. Sobald weekDay als deklariert ist DaysofaWeek , können Sie eine abgekürzte Syntax es zu setzen verwenden , um einen anderen (.) DaysofaWeek Wert:

var weekDay = .THURSDAY 

Wenn weekDay , wenn der Typ bekannt ist, kann seine Aufgabe wieder Aufzählung Namen weggelassen werden. explizite Typ Enumerationswerten Verwenden macht den Code besser lesbar.

Es kann in Aufzählungswert mit dem ursprünglichen Wert zugeordnet unterteilt werden.

Die Differenz zwischen dem Korrelationswert und dem ursprünglichen Wert

Der Korrelationswert Original-Wert
Verschiedene Arten von Daten Die gleichen Datentyp
Beispiele: enum {10,0.8: "Hallo"} Beispiele: enum {10,35,50}
Erstellen Sie einen Wert auf Basis konstanter oder variabler Wert vorausgefüllt
Korrelationswert, wenn Sie eine neue Mitgliedschaft basierende Enumerationskonstante oder Variable erstellen wird gesetzt, und jedes Mal, wenn Sie Zeit haben, kann ihr Wert unterschiedlich sein. Der ursprüngliche Wert ist immer der gleiche

Der Korrelationswert

Im folgenden Beispiel haben wir einen Namen: Student der Aufzählungstyp definieren, kann es eine zugehörige Wert-Name (Int, Int, Int, Int) oder Mark ein String-Typ (String) Korrelationswert sein.

import Cocoa

enum Student{
    case Name(String)
    case Mark(Int,Int,Int)
}
var studDetails = Student.Name("w3big")
var studMarks = Student.Mark(98,97,95)
switch studMarks {
case .Name(let studName):
    print("学生的名字是: \(studName)。")
case .Mark(let Mark1, let Mark2, let Mark3):
    print("学生的成绩是: \(Mark1),\(Mark2),\(Mark3)。")
}

Die obige Programmausführung Ausgabe ist:

学生的成绩是: 98,97,95。

Original-Wert

Der ursprüngliche Wert kann eine Zeichenfolge, Zeichen sein, oder eine ganze Zahl oder Fließkommawert. Jeder ursprünglichen Wert in seiner Enum-Deklaration muss eindeutig sein.

Wenn der ursprüngliche Wert eine ganze Zahl Aufzählung ist, ohne eine explizite Zuweisung für jedes Mitglied, Swift werden Sie automatisch zuweisen.

Wenn beispielsweise ein ganzzahliger Wert wie das Original verwendet, zugeordnet der implizite Wert sequentiell um eins erhöht. Wenn der erste Wert nicht zugewiesen wird der Anfangswert automatisch auf Null gesetzt werden.

import Cocoa

enum Month: Int {
    case January = 1, February, March, April, May, June, July, August, September, October, November, December
}

let yearMonth = Month.May.rawValue
print("数字月份为: \(yearMonth)。")

Die obige Programmausführung Ausgabe ist:

数字月份为: 5。