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
BeispielSunday
,Monday
,……
undSaturday
wird nicht implizit den Wert zugewiesen0
,1
,……
und6
. Stattdessen selbst haben diese Elemente eine vollständige Aufzählung Werte , die bereits klar definiert sindDaysofaWeek
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。