Ваша проблема в том, что вы цитируете строковые индексы.Общий синтаксис объявления ключа таблицы в конструкторе таблицы: [<key>] = <value>
, например, [20] = 20
или ["x"] = i + 2
.
Сокращение для ["<key>"] = <value>
, то есть для действительных индексов строкИмена переменных, вы можете написать <key> = <value>
, например x = i + 2
.
В вашем коде вы используете сочетание обоих и напишите { ..., "x" = i + 2, ... }
.Быстрый поиск в Google показывает мне, что в Python, который вы упоминаете, вы цитируете строковые ключи в словарях, так что вы, вероятно, смешали это с Lua?
EDIT: я заметил это немного поздно, но вы также можете использоватьipairs
для итерации первой таблицы и table.insert
для вставки значений:
function BuildsubTable()
local oTable = {}
local name = {"P1","P2"}
for i,name in ipairs(name) do
table.insert(oTable, {name = name, "x" = i + 2, "y" = i + 1})
end
return oTable
end