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)