Конструкторы таблиц

<< Click to Display Table of Contents >>

Navigation:  Multi-Protocol MasterOPC Server > Руководство по языку Lua 5.1 > Язык и синтаксис > Выражения >

Конструкторы таблиц

Конструкторы таблиц

Конструкторы таблиц тоже относятся к выражениям. Обработка любого встречающегося в коде конструктора ведет к созданию новой таблицы. С помощью конструкторов можно создать как пустые, так и частично либо полностью заполненные таблицы. Пример конструктора таблицы:

mytable = {1,2,"10"}

Возможны различные варианты инициализации таблицы, в частности можно указывать конкретный номер элемента таблицы, который нужно инициализировать. Например:

mytable = {10,20,[6]=30}

В данном случае 1 элемент таблицы будет инициализирован 10, второй число 20, а 6 элемент - 30.

Более сложный пример:

a = { [f(1)] = g; "x", "y"; x = 1, f(x), [30] = 23; 45 }

эквивалентно

do

local t = {}

t[f(1)] = g

t[1] = "x"         -- 1st exp

t[2] = "y"         -- 2nd exp

t.x = 1           -- t["x"] = 1

t[3] = f(x)       -- 3rd exp

t[30] = 23

t[4] = 45         -- 4th exp

a = t

end

Если последнее поле в списке задано в форме exp, и exp – это вызов функции или неопределенный список параметров, то все значения, возвращаемые этим выражением, последовательно включаются в этот список (см. Вызовы функций ). Чтобы этого избежать, необходимо заключить вызов функции (или список неопределенных параметров) в скобки (см. Выражения ).

Список полей может оканчиваться разделителем для удобства чтения генерируемого кода.