Enums and Pattern Matching
Switch on an Enum
Switch statements can handle each enum case explicitly.
Match every state
switch_enum.swift
enum TaskStatus {
case queued
case running
case done
}
let step =
let status: TaskStatus
if step == 0 {
status = TaskStatus.queued
} else if step < 3 {
status = TaskStatus.running
} else {
status = TaskStatus.done
}
var message = ""
switch status {
case TaskStatus.queued:
message = "waiting"
case TaskStatus.running:
message = "working"
case TaskStatus.done:
message = "complete"
}
print("step=\(step)")
print(message)
enum TaskStatus {
case queued
case running
case done
}
let step =
let status: TaskStatus
if step == 0 {
status = TaskStatus.queued
} else if step < 3 {
status = TaskStatus.running
} else {
status = TaskStatus.done
}
var message = ""
switch status {
case TaskStatus.queued:
message = "waiting"
case TaskStatus.running:
message = "working"
case TaskStatus.done:
message = "complete"
}
print("step=\(step)")
print(message)
enum TaskStatus {
case queued
case running
case done
}
let step =
let status: TaskStatus
if step == 0 {
status = TaskStatus.queued
} else if step < 3 {
status = TaskStatus.running
} else {
status = TaskStatus.done
}
var message = ""
switch status {
case TaskStatus.queued:
message = "waiting"
case TaskStatus.running:
message = "working"
case TaskStatus.done:
message = "complete"
}
print("step=\(step)")
print(message)
exhaustive switch
Swift checks enum switches so every possible case is handled.