Pregunta
No conozco: http://lua-users.org/wiki/SimpleLuaApiExample
Me muestra cómo construir una tabla (clave, valor) de entrada par de entrada.
Supongamos lugar, quiero construir una mesa gigantesca (digamos algo una mesa de entrada 1000, donde tanto la clave y valor son cadenas), hay una manera más rápida de hacerlo en Lua (en lugar de 4 llamadas func por entrada:
push
key
value
rawset
Solución
¿Qué usted ha escrito es la manera rápida de resolver este problema. tablas Lua se han diseñado de manera brillante, y lo suficientemente rápido que no hay necesidad de algún tipo de falsa " pista" para decir 'espero que esta tabla para crecer para contener elementos de 1000'.
Otros consejos
Para claves de cadena, puede utilizar lua_setfield
.
Por desgracia, para las tablas asociativas (claves de cadena, llaves no consecutivos enteros), no, no lo hay.
Para las tablas de tipo matriz (donde se utiliza la normal indexación número entero 1 ... N), hay algunas funciones de rendimiento optimizado, lua_rawgeti
y lua_rawseti
: http://www.lua.org/pil/27.1.html
Se puede utilizar CreateTable para crear una tabla que ya tiene el número necesario de ranuras. Sin embargo, después de eso, no hay manera de hacerlo más rápido que no sea
for(int i = 0; i < 1000; i++) {
lua_push... // key
lua_push... // value
lua_rawset(L, tableindex);
}