Mez Files, Units and Functions
Former user (Deleted)
Units and Functions
Units are groupings of functions and variables appearing in .mez
files. They can be thought of as modules or namespaces. A Helium app must have at least one unit. The unit
keyword must be followed by a unique unit name. A unit must have at least one function.
unit MyUnit; // Other code follows string myVar; int factorial(int x) { if(x == 0 || x == 1) { return 1; } else if (x > 1) { return factorial(x - 1); } return 0; }
Objects, enums and validators are global, so they can optionally be in a separate source code file without a unit.
Mez File Comments
Two types of comments are supported: single line comments and multi-line comments:
// date tstamp = System.now(); // decimal rand = System.random();
/* date tstamp = System.now(); decimal rand = System.random(); */
Variable and Function Scope
Suppose a unit MyUnit
has a unit variable named myVar
and a function named factorial
. Both have global scope and can be accessed by any function in this or other units, e.g. from TestUnit
in the example below. The only time a variable or custom object in the Helium DSL is not globally scoped is when it is declared inside a function and thus scoped to the function alone. To refer to a unit’s member functions or variables from another unit, you have to use the scope operator (the colon).
unit TestUnit; void test() { MyUnit:myVar = "New string value!"; int f = MyUnit:factorial(5); }
Note: Unit variables cannot be in line initialized when they are declared. The following code will not compile:
unit MyUnit; string myVar = "some value"; // this is not a legal statement
Additional Mentions and References
- Sections Adding a Presenter and Referencing Unit Variables and Functions in Lesson 1 of the Tutorial.