Enums

Enums allow you to define a type by enumerating its possible variants. Arden enums are algebraic data types, meaning they can hold data.

Basic Enums

enum Color {
    Red,
    Green,
    Blue
}

Enums with Data

enum Message {
    Quit,
    Move(x: Integer, y: Integer),
    Write(String),
    ChangeColor(r: Integer, g: Integer, b: Integer)
}

Pattern Matching with Enums

You use match to extract data from enums.

msg: Message = Message.Write("Hello");

match (msg) {
    Quit => { println("Quitting"); }
    Move(x, y) => { println("Moving to {x}, {y}"); }
    Write(s) => { println("Message: {s}"); }
    _ => { println("Other"); }
}