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
¿Fue útil?

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);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top