indirect enum Shape {
case point(Int, Int)
case line(Shape, Shape)
func toString() -> String {
switch self {
case .point(let x, let y):
return "(\(x), \(y))"
case .line(let p1, let p2):
return p1.toString() + "; " + p2.toString()
}
}
}
let point1 = Shape.point(3, 4)
let point2 = Shape.point(7, 9)
let line = Shape.line(point1, point2)
let info = line.toString()
//info is "(3, 4); (7, 9)"
print("info is \(info)")