Вопрос

Я знаю: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);
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top