Skip to content

Instantly share code, notes, and snippets.

@0xLeif
Created June 22, 2021 15:02
Show Gist options
  • Save 0xLeif/787215c5ca474b598d94daf707ea6f57 to your computer and use it in GitHub Desktop.
Save 0xLeif/787215c5ca474b598d94daf707ea6f57 to your computer and use it in GitHub Desktop.
Swift Enum Directions
indirect enum Direction {
case north(Float), east(Float), south(Float), west(Float)
case go(Direction, Direction?)
}
extension Direction {
var steps: String {
switch self {
case .north(let miles):
return "North for \(miles) miles"
case .east(let miles):
return "East for \(miles) miles"
case .south(let miles):
return "South for \(miles) miles"
case .west(let miles):
return "West for \(miles) miles"
case .go(let first, let second):
if let second = second {
return "Go \(first.steps), then \(second.steps)"
}
return "Go \(first.steps)"
}
}
}
let directions = Direction.go(.north(2), .go(.west(1), .south(0.1)))
print(directions.steps)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment