English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Массив - это множество элементов одного и того же типа данных,排列енных в определенном порядке, может быть одномерным или многомерным.
Индекс ключа Lua массива может быть представлен целым числом, размер массива не фиксирован.
Одномерный массив является самым простым массивом, его логическая структура - это линейный список. Одномерный массив можно использовать для вывода элементов массива с помощью цикла for, например:
array = {"Lua", "Tutorial"} for i = 0, 2 do print(array[i]) end
Результат выполнения кода приведен выше:
nil Lua Tutorial
Как вы видите, мы можем использовать целочисленные индексы для доступа к элементам массива, и если указанный индекс не имеет значения, возвращается nil.
В Lua индексация начинается с 1, но вы также можете указать, чтобы она начиналась с 0.
Кроме того, мы можем использовать отрицательные числа в качестве значений индексов массива:
array = {} for i = -2, 2 do array[i] = i * 2 end for i = -2, 2 do print(array[i]) end
Результат выполнения кода приведен выше:
-4 -2 0 2 4
Многоуровневый массив — это массив, который содержит массивы или массивы одного уровня, где ключ индекса соответствует массиву.
Вот пример многоуровневого массива с тремя строками и тремя столбцами:
-- Инициализация массива array = {} for i = 1, 3 do array[i] = {} for j = 1, 3 do array[i][j] = i * j end end -- Доступ к массиву for i = 1, 3 do for j = 1, 3 do print(array[i][j]) end end
Результат выполнения кода приведен выше:
1 2 3 2 4 6 3 6 9
Многоуровневый массив с тремя строками и тремя столбцами с различными ключами индексов:
-- Инициализация массива array = {} maxRows = 3 maxColumns = 3 for row = 1, maxRows do for col = 1, maxColumns do array[row*maxColumns + col] = row * col end end -- Доступ к массиву for row = 1, maxRows do for col = 1, maxColumns do print(array[row*maxColumns + col]) end end
Результат выполнения кода приведен выше:
1 2 3 2 4 6 3 6 9
Как вы видите, в приведенных выше примерах, массив устанавливает указанные значения индексов, что предотвращает возникновение значений nil и способствует экономии памяти.