Frage
Ich kenne: http://lua-users.org/wiki/SimpleLuaApiExample
Es zeigt mir, wie durch die Eingabe einer Tabelle (Schlüssel, Wert) -Paar Eintrag aufzubauen.
Nehmen wir stattdessen, ich möchte eine gigantische Tabelle (sagen wir etwas ein 1000 Eintragstabelle, wo beide Schlüssel & Wert Strings) bauen, ist es eine schnelle Möglichkeit, dies in lua zu tun (statt 4 func Anrufe pro Eintrag:
push
key
value
rawset
Lösung
Was Sie geschrieben haben, ist die schnelle Möglichkeit, dieses Problem zu lösen. Lua Tabellen brillant konstruiert sind, und schnell genug, dass es keine Notwendigkeit für irgendeine Art von Schein ist " Hinweis“zu sagen:‚ich erwarte, dass diese Tabelle enthält 1000 Elemente wachsen.‘
Andere Tipps
Bei String-Tasten können Sie lua_setfield
verwenden.
Leider für assoziative Tabellen (String-Schlüssel, nicht aufeinanderfolgende ganzzahlige Schlüssel), nein, es ist nicht.
Für Array-Typ-Tabellen (wo die regulären 1 ... N ganzzahlige Indizieren verwendet wird), gibt es einige leistungsoptimierte Funktionen, lua_rawgeti
und lua_rawseti
: http://www.lua.org/pil/27.1.html
Sie können mit Create eine Tabelle erstellen, die bereits die erforderliche Anzahl von Schlitzen. Aber danach gibt es keine Möglichkeit, es schneller als andere
zu tunfor(int i = 0; i < 1000; i++) {
lua_push... // key
lua_push... // value
lua_rawset(L, tableindex);
}