<< 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 – это вызов функции или неопределенный список параметров, то все значения, возвращаемые этим выражением, последовательно включаются в этот список (см. Вызовы функций ). Чтобы этого избежать, необходимо заключить вызов функции (или список неопределенных параметров) в скобки (см. Выражения ).
Список полей может оканчиваться разделителем для удобства чтения генерируемого кода.