Enums name a small set of possible states.

Choose from named cases

input
enum_cases.swift
Replay: real traced execution (multi-file project)
enum Direction {
    case north
    case south
    case east
    case west
}

let input = "east"
var direction = Direction.east

switch input {
case "north":
    direction = Direction.north
case "south":
    direction = Direction.south
case "west":
    direction = Direction.west
default:
    direction = Direction.east
}

print("input=\(input)")
print("direction=\(direction)")
enum Direction {
    case north
    case south
    case east
    case west
}

let input = "north"
var direction = Direction.east

switch input {
case "north":
    direction = Direction.north
case "south":
    direction = Direction.south
case "west":
    direction = Direction.west
default:
    direction = Direction.east
}

print("input=\(input)")
print("direction=\(direction)")
enum Direction {
    case north
    case south
    case east
    case west
}

let input = "west"
var direction = Direction.east

switch input {
case "north":
    direction = Direction.north
case "south":
    direction = Direction.south
case "west":
    direction = Direction.west
default:
    direction = Direction.east
}

print("input=\(input)")
print("direction=\(direction)")
  1. input ← east, direction ← east

    8let input→ east = "east"  //@input="north", "west"9var direction→ east = Direction.east
  2. switch input

    11switch inputeast {12case "north":13    direction = Direction.north
  3. direction ← east

    17    direction = Direction.west18default:19    direction→ east = Direction.east20}
  4. print("input=\(input)")

    22print("input=\(inputeast)")23print("direction=\(directioneast)")
    outputinput=east
    direction=east
  1. input ← north, direction ← east

    8let input→ north = "north"9var direction→ east = Direction.east
  2. switch input

    11switch inputnorth {12case "north":13    direction = Direction.north
  3. direction ← north

    11switch input {12case "north":13    direction→ north = Direction.north14case "south":
  4. print("input=\(input)")

    22print("input=\(inputnorth)")23print("direction=\(directionnorth)")
    outputinput=north
    direction=north
  1. input ← west, direction ← east

    8let input→ west = "west"9var direction→ east = Direction.east
  2. switch input

    11switch inputwest {12case "north":13    direction = Direction.north
  3. direction ← west

    15    direction = Direction.south16case "west":17    direction→ west = Direction.west18default:
  4. print("input=\(input)")

    22print("input=\(inputwest)")23print("direction=\(directionwest)")
    outputinput=west
    direction=west
enum An enum case is a typed value. A switch can convert outside input into one of the known cases.