Раздел: CronosPRO | Дата редакции: 11.07.2013 | id статьи: 1532 |
Работа с массивами в Lua
Массив — это таблица, ключами которой являются целые положительные числа. Чтобы создать массив, достаточно перечислить в фигурных скобках значения его элементов:
t = {"красный", "зеленый", "синий"}
t = {[1]="красный", [2]="зеленый", [3]="синий"}
Обратите внимание
- В Lua массивы индексируются, начиная с 1 (а не с 0, как в некоторых языках программирования).
t = {"красный", "зеленый", "синий"} n = #t -- n равно 3
a = t[#t] -- присвоим переменной a значение последнего элемента массива t t[#t] = nil -- удалим последний элемент массива t t[#t+1] = a -- добавим значение переменной a в конец массива t
Обратите внимание
При работе с массивами следует учитывать важную особенность оператора #. Этот оператор рассматривает любой неинициализированный (имеющий значение nil) элемент массива как признак конца массива. Поэтому, например, для таблицы:
t = {[1]="first", [3]="third"} -- элемент с индексом 2 отсутствует (t[2]==nil)
оператор получения длины вернёт 1, а не 2 или 3. Таким образом, для корректной работы оператора # необходимо, чтобы массив не содержал «пустых» элементов.
Если таблица не содержит целочисленных ключей (либо элемент с индексом 1 равен nil), оператор # возвращает 0:
t = {red="красный", green="зеленый", blue="синий"} n = #t -- n равно 0 t = {[2]="красный", [3]="зеленый", [4]="синий"} n = #t -- n равно 0 (поскольку t[1] имеет значение nil)