Arrays
An array type is defined by just adding adding a [] to an existing type:
element_type[]
E.g.
string[]
is an array of strings.
int[][]
is an array of arrays of integers.
An array can be initialized with a [ element_list ] notation:
let a : string[] = ["zero", "one", "two", "three"]
initializes the variable a with an array of string with the elements “zero”, “one”, “two”, “three”.
Elements of an array can be accessed with the usual index notation:
a[2]
will be the string “two”.
Properties
All arrays have a length property giving the the number of elements.
E.g.
["zero", "one", "two", "three"].length
will be 4.
Methods
reverse
The .reverse() method just reverts the array.
E.g.
["zero", "one", "two", "three"].revert()
will be ["three", "two", "one", "zero"].
map
The map(converter) function can be used to convert an array to another array, whereas converter is a generic function that converts each element into something else:
[0, 1, 2, 3].map(fn(i) -> i.to_string())
will be the array ["0", "1", "2", "3"].
["zero", "one", "two", "three"].map(fn(s) -> "the " + s)
will be ["the zero", "the one", "the two", "the three"]
map_with_index
map_with_index is similar to map, with the extension that convert also gets the current index.
["zero", "one", "two", "three"].map(fn(s, idx) -> s + " = " + idx.to_string())
will be ["zero = 0", "one = 1", "two = 2", "three = 3"]
find
find(condition) finds the fist element in the array satisfying a condition, whereas condition is a function taking an element and returning a bool. The result of find is an Option.
["zero", "one", "two", "three"].find(fn(s) -> s == "one")
will be Some("one") (i.e. an Option<string> which is defined and has value “one”)
["zero", "one", "two", "three"].find(fn(s) -> s == "something")
will be None.
exists
exists(condition) just checks of one of the elements satisfies the given condition. It is a shorthand for find(condition).defined
filter
filter(condition) creates a new array containing all the elements satisfying a given condition.
["zero", "one", "two", "three"].filter(fn(s) -> s != "one")
will be ["zero", "two", "three"].