v0.16.0

Variables

Ghost is under heavy active development

While we strive to keep our documentation up to date, it's possible that it may fall out of sync with the latest developments on GitHub.

Variables are named slots for storing values. You define a new variable in Ghost using the := operator, like so:

a := 1 + 2

This creates a new variable a in the current scope and initializes it with the result of the expression following :=. Once a variable has been defined, it can be accessed by name as you would expect.

technology := "Micromachines"

print(technology) // >> Micromachines

Scope

Ghost has true block scope: a variable exists from the point where it is defined until the end of the block where that definition appears.

function foobar() {
    print(a)  // Error: "a" doesn't exist yet.

    a := 123

    print(a) // >> 123
}

print(a)  // Error: "a" doesn't exist anymore.

Variables defined at the top level of a script are top-level, or global. All other variables are local. Declaring a variable in an inner scope with the same name as an outer one is called shadowing and is not an error.

a := "outer"

function foobar() {
    a := "inner"

    print(a)  // inner
}

print(a)  // outer