Arrays are sequences of values.

Arrays can be written out as array literals using a sequence of expressions surrounded by square brackets, e.g., ['hello', 'world'] is an array of strings, [x, x + 1, x + 2] is an array of numbers (assuming x is a number), [] is an empty array, and ['hello', 42, true] is a mixed array.

A value in an array can be accessed by indexing using square brackets where the index is a number, for example, arr[0], arr[42], arr[i] (where arr is an array and i is a (whole) number).

There are some useful functions for working with arrays in the standard library, see std::array for details.

Array types

Arrays have their own types: [T] where T is the type of the elements of the array, for example, [string] means an array of strings and [any] means an array of any values.

Array types can also include length information: [T; n] denotes an array of length n (where n is a number literal) and [T; 1+] denotes an array whose length is at least one (i.e., a non-empty array). E.g., [string; 1+] and [number(mm); 3] are valid array types.

Ranges

Ranges are a succinct way to create an array of sequential numbers. The syntax is [start .. end] where start and end evaluate to whole numbers (integers). Ranges are inclusive of the start and end. The end must be greater than the start. Examples:

[0..3]      // [0, 1, 2, 3]
[3..10]     // [3, 4, 5, 6, 7, 8, 9, 10]
x = 2
[x..x+1]    // [2, 3]

The units of the start and end numbers must be the same and the result inherits those units.