Вопрос
Я знаю:http://lua-users.org/wiki/simpleluaapiexample.
Это показывает мне, как создать таблицу (ключ, значение) пары пары по входу.
Предположим вместо этого, я хочу построить гигантский стол (скажи что-нибудь таблицу входа 1000, где оба клавиша и значение являются строками), есть ли быстрый способ сделать это в LUA (вместо 4 звонков FUNC на вход:
push
key
value
rawset
Решение
Что вы написали является быстрый способ решить эту проблему. Столы Lua блестяще спроектированы, и достаточно быстро, чтобы не нужно в каком-то божественном «подсказке», чтобы сказать «Я ожидаю, что эта таблица будет расти, чтобы содержать 1000 элементов».
Другие советы
Для строчных клавиш вы можете использовать lua_setfield
.
К сожалению, для ассоциативных таблиц (струнные ключи, не последовательные целочисленные ключи), нет, нет.
Для таблиц типа массива используется (где используется обычный 1 ... n целочисленная индексация), существуют некоторые функции оптимизированные производительностью, lua_rawgeti
а также lua_rawseti
: http://www.lua.org/pil/27.1.html.
Вы можете использовать Createable, чтобы создать таблицу, которая уже имеет необходимое количество слотов. Однако после этого нет способа сделать это быстрее, кроме
for(int i = 0; i < 1000; i++) {
lua_push... // key
lua_push... // value
lua_rawset(L, tableindex);
}