Skip to content

Built-in types

Kinds of built-in types

HeliScript provides the following basic types.

type content
int 32bit signed integer value
float 32bit floating-point number
bool boolean (true, or false)
string UTF-8 string

class type

A class type is provided as a type that has a structure and can be independently defined and generated by the user.

type content
class structured reference type (valid reference value, or NULL)

Manage references

Instances of class are treated as references.

HeliScript uses reference counter to manage the life of references. It increments an internally recorded "reference counter" when an object is referenced from anywhere, and decrements the "reference counter" when it is unreferenced. Objects that are no longer referenced will have a reference counter of 0 and proceed to be automatically deleted.

HeliScript provides NULL as a value that represents an "empty reference" that does not point to anything.

Get reference

If ref is added to the argument definition of a function, the argument will be passed by reference.

As such, you can change the variable of the calling function by assigning the variable at the destination of the argument.

void RefFunc(ref int x, ref int y) {
     x = 100;
     y = 200;
}

void Test() {
     int x = 0;
     int y = 0;

     // pass arguments by ref
     RefFunc(x, y);

     // -> "x=100, y=200"
     hsSystemOutput("x=%d, y=%d\n" %x%y);
}

"string" and 'character'

HeliScript recognizes a string enclosed in double quotation marks (" ") as a string object.

Enclosing a single character in single quotes (' ') makes it a character type. Character types are represented internally as 32-bit integer values.

// string type object
string str = "VketCloud";
// character type (actually integer value)
int chr = 'V';

Automatic initialization of uninitialized variables

When you define a variable, if you do not initialize it, the following initial values are automatically set depending on the type.

type initial value
int 0
float 0.0f
bool false
string empty string
class NULL

The bool type is treated internally as a 32-bit integer value, with 1 assigned to true and 0 to false. If you assign an integer value to a bool type variable, 0 will be converted to false and everything else will be converted to true.