открыть: Синтаксис 2Syntax 1

Тип $array

Для создания массива служит конструкция []. Разделять элементы запятой не обязательно. Нумерация элементов начинается с нуля.

empty = [] -- пустой массив items = [1 2 3] items.0 = 0 -- меняем значение первого элеменета с единицы на ноль

После последнего элемента также можно поставить запятую – она ни на что не влияет.

array = [4, 5, 6] array = [4, 5, 6,]

Добавление элементов в конец массива:

array[] = 7 array.# = 8

Доступ к элементу массива через переменную (или через выражение) в качестве индекса. Важно: между именем переменной и открывающей квадратной скобкой не должно быть пробела при доступе к элементу массива (иначе сработает разделитель выражений).

array = [1 2 3] a = 0 array[a] #echo # -- выдаст '1'

Отрицательный индекс используется для нумерации с конца.

array = [1 2 3 4 5] array[1_] #echo # -- выдаст последний элемент 5

Обращение к несуществующему элементу массива (например при выходе за пределы массива) даст null #.

a = [] a.0 == # a.1_ == #

Кроме того тип ключа для обычного массива должен быть $int, иначе при обращении к элементу будет возвращено null. Запись же в массив не по $int ключу аналогично добавлению в конец.

b = [1 2] b[#1] == # -- тип ключа $bool b[%hello] = 10 -- добавляем 10 в конец, теперь b = [1 2 10]

Однако при записи в массив по ключу #0 произойдёт добавление в начало.

c = [1 2] c.#0 = 0 c[#0] = 1_ -- добавляем в начало значение минус один c #echo ', ' -- выдаст: -1, 0, 1, 2

Автоматическое создание массива

Если значение переменной не является массивом, мапой или объектом класса, то при добавлении в конец произойдёт автоматическое создание массива.

n = 10 n.# = 1 -- аналогично: n[] = 1 n #dump #0 -- выдаст: [1]

Удаление элемента из массива

array = [%zero %one %two %three] array #remove 1 -- удаляем элемент с индексом 1 array #echo ", " -- выдаст: zero, two, three

Вывод массива на экран

Для вывода массива можно воспользоваться функцией #echo. Правый её аргумент – разделитель элементов. Кроме того для отображения индексов элементов необходимо в качестве разделителя передать массив из двух элементов (первый - разделитель элементов, второй - разделитель пары индекс-значение).

[%a, %b, %c, %d] => items #echo ', ' -- Выдаст: a, b, c, d "\n" #echo # -- перевод строки items #echo [' ', ":"] -- Выдаст: 0:a 1:b 2:c 3:d

Ещё для вывода на экран есть функция #dump. Если её правый аргумент true #1 - то вывод будет структурированный (в несколько строк).

[1 2 3] #dump #0 -- Выдаст: [1, 2, 3]

Многомерный массив

matrix = [ [0 1] [2 3] [4 5] ] matrix.0.1 == 1 matrix[0, 1] == 1 matrix[0 1] == 1 matrix[0].1 == 1 matrix.0$ == $array

Смотри также: Цикл each