Building Debug-Friendly Types
Combine descriptions and reflection effectively.
Combining the Tools
The best types are easy to inspect. Combine CustomStringConvertible, CustomDebugStringConvertible, and Mirror to make values that print clearly and reveal their internals on demand.
A Clean description
Start with user-facing output:
struct Vector: CustomStringConvertible {
let x: Double
let y: Double
var description: String { "(\(x), \(y))" }
}
print(Vector(x: 1, y: 2)) // (1.0, 2.0)All lessons in this course
- CustomStringConvertible
- CustomDebugStringConvertible
- Reflection with Mirror
- Building Debug-Friendly Types