Mit Enumarations werden bestimmte Werte in einem Type gruppiert. Diese Werte können dann verwendet werden, ohne das man sich über deren Type Gedanken machen muss.
1 2 3 4 5 6 |
enum Position { case Top case Right case Bottom case Left } |
Die so definierte Enumeration Position hat jetzt die Member Top, Right, Bottom und Left.
Hinweis: Im Gegensatz zu C und Objective-C haben die Member keinen standardmäßigen Integer-Wert. Top, Right, Bottom und Left sind also nicht explizit 0, 1, 2 und 3.
Die Werte lassen sich so zuweisen:
1 |
var cursorPos = Position.Top |
Wenn die Variable cursorPos ihren Typ kennt, kann sie auch über eine kurze Schreibweise zugewiesen werden:
1 |
cursorPos: Position = .Left |
Abfrage über ein Switch-Statement
Um einen Wert abzufragen, kann man einfach ein Switch-Statement nutzen.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
cursorPos = .Bottom switch cursorPos { case .Top: println("Der Zeiger ist oben.") case .Right: println("Der Zeiger ist rechts.") case .Bottom: println("Der Zeiger ist unten.") case .Left: println("Der Zeiger ist links.") } // gibt »Der Zeiger ist unten.« aus |
Switch-Abfragen müssen vollständig sein. Würde man im oberen Code dem Abschnit für .Left weglassen, bekäme man einen Compiler-Fehler. Man muss die Abfrage also um default ergänzen, wenn man nicht alle Member berücksichtigen will:
1 2 3 4 5 6 7 8 9 |
cursorPos = .Left switch cursorPos { case .Top: println("Der Zeiger ist oben.") default: println("Der Zeiger ist irgendwo anders.") } // gibt »Der Zeiger ist irgendwo anders.« aus |
Verbundene Werte (Associated Values)
1 2 3 4 |
enum Barcode { case UPCA(Int, Int, Int, Int) case QRCode(String) } |
Die Zuweisung erfolgt folgendermaßen.
1 |
var productCode = Barcode.UPCA(1, 89798, 65445, 9) |
Der Wert wird über einen Tuple zugewiesen.
Ein neuer QRCode lässt sich ebenfalls zuweisen.
1 |
productCode = .QRCode("SWIFTISTSUPER") |
Reine Werte (Raw Values)
Es können auch explizit Werte zugewiesen werden:
1 2 3 4 5 6 |
enum ASCIIControlCharacters { case Tab = "\t" case LineFeed = "\n" case CarriageReturn = "\r" case CarriageReturnLineFeed = "\r\n" } |
Ein Gedanke zu „Enumerations in Swift“
Kommentare sind geschlossen.