An enumeration defines a common type for a group of related values and enables you to work with those values in a type-safe way within your code.
Basic Enum Example
enum CompassPoint { case north case south case east case west } // Initiation can be done like this let currentState = CompassPoint.east // or like this let direction:CompassPoint = .east
Switch in Enum
switch directionToHead { case .north: print("Lots of planets have a north") case .south: print("Watch out for penguins") case .east: print("Where the sun rises") case .west: print("Where the skies are blue") }
Iterable Enum
Here, we can check the count and loop over the enums
enum Beverage: CaseIterable { case coffee, tea, juice } let numberOfChoices = Beverage.allCases.count print("\(numberOfChoices) beverages available") for beverage in Beverage.allCases { print(beverage) }
By using enums, the variable can easily checked and compared.
Other things about enums is, you can use it to specify the error type that you want to return
enum FileError: Error { case notFound case permissionDenied(reason: String) } func readFile(named name: String) throws { if name.isEmpty { throw FileError.notFound } if name == "secret.txt" { throw FileError.permissionDenied(reason: "User lacks read access") } print("File '\(name)' read successfully.") } do { try readFile(named: "TEXT.txt") } catch let error as FileError { switch error { case .notFound: print("Error: File not found.") case .permissionDenied(let reason): print("Error: Permission denied - \(reason)") } } catch { print("An unknown error occurred: \(error)") }
Top comments (0)