This repository has been archived on 2025-08-04. You can view files and clone it, but cannot push or open issues or pull requests.
rhaj/_archive/rhai_engine/rhaibook/language/global.md
2025-04-04 08:28:07 +02:00

1.1 KiB

Automatic Global Module

{{#include ../links.md}}

When a [constant] is declared at global scope, it is added to a special [module] called global.

[Functions] can access those [constants] via the special global [module].

Naturally, the automatic global [module] is not available under [no_function] nor [no_module].

const CONSTANT = 42;        // this constant is automatically added to 'global'

{
    const INNER = 0;        // this constant is not at global level
}                           // <- it goes away here

fn foo(x) {
    x *= global::CONSTANT;  // ok! 'CONSTANT' exists in 'global'

    x * global::INNER       // <- error: constant 'INNER' not found in 'global'
}

Override global

It is possible to override the automatic global [module] by [importing][import] another [module] under the name global.

import "foo" as global;     // import a module as 'global'

const CONSTANT = 42;        // this constant is NOT added to 'global'

fn foo(x) {
    global::CONSTANT        // <- error: constant 'CONSTANT' not found in 'global'
}