Classes

Classes are the primary way to organize code in VDX. Starting with v0.0.15, classes are recommended but optional — you can write top-level statements directly. However, classes are still essential for object instantiation and for organizing larger programs.

Syntax

class ClassName {
    // variables, functions, statements
}

Rules

  • A .vdx file can contain zero or more classes (v0.0.15+)
  • Class names must start with a letter or underscore
  • Code outside a class is allowed — top-level statements run in order
  • A file can contain multiple classes — they run in order
  • If no class is present, a recommendation tip is printed to stderr

Execution order

Inside a class, VDX does two passes:

  1. Register all functions (so you can call them before they appear in code)
  2. Execute all non-function statements top-to-bottom
class App {
    // This works — greet() is registered in pass 1
    greet();

    fn greet() {
        print("hello");
    }
}

Multiple classes

class First {
    print("I run first");
}

class Second {
    print("I run second");
}

Classes as blueprints

Classes can also be used as blueprints for object instantiation with new. See Objects (new).

class Point {
    let x: int = 0;
    let y: int = 0;
}

class Main {
    let p = new Point();
    p.x = 10;
    print(p.x);   // 10
}