Erstellen einer einfachen Tabelle mit Lua-Tabellen C-API
Bin ich mit einem MySQL-query gibt immer 4 Zeilen:
row->name
, row->date
, row->ip
, row->custom
Was ich erreichen möchte ist eine einfache Tabelle erstellt auf der Grundlage der oben genannten Ergebnisse, so würde es Aussehen:
{
"name" = result of row->name,
"date" = result of row->date,
"ip" = result of row->ip,
"custom" = result of row->custom
}
Ich habe versucht, mehrere Möglichkeiten, aber die Beispiele gepostet, die sind wirklich sehr abwechslungsreich und ich habe eine Probleme macht, es funktioniert.
Mein letzten erfolglosen versuchen:
lua_createtable(L, 0, 4);
top = lua_gettop(L);
lua_pushstring(L, "name");
lua_pushstring(L, row->name);
lua_pushstring(L, "date");
lua_pushnumber(L, row->date);
lua_pushstring(L, "ip");
lua_pushstring(L, row->ip);
lua_pushstring(L, "custom");
lua_pushstring(L, row->custom);
lua_settable(L, top);
lua_settable()
setzt die nur 1 Wert und erscheint nur 1 paar Schlüssel, Wert vom Stapel. Wiederholen Sie es 4.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie ich bereits in Kommentar,
lua_settable()
kümmert sich nur einerkey, value
- pair-Mädchen. Muss wiederholen, dass, wenn Sie mehr brauchen.Ich würde lieber sparen die Lua-stack-Speicher wie diese:
Auch, Sie schreiben, könnte irgendeine Art von C struct iterator oder so etwas.
HINWEIS: wenn für irgendeine Art von Lua-wrapper - sollten Sie sicherstellen standardisierte Art und Weise zu tun, dass. Im folgenden Beispiel angewendet @lhf Kommentar zu verkürzen, wird es ein wenig:
EDIT: Korrekturen Nutzung von
lua_setfield()
von @lhf Hinweis. Danke!lua_newtable
statt derlua_createtable
?lua_createtable()
spart einige Zeit der zunehmenden Speichers, der für die Tabelle jedes mal einfügen Zeug. Und empfohlen verwendet werden. Falls die Größe der Tabelle ist nicht bekannt, Sie sind frei zu verwendenlua_newtable
.print(variable["name"]);
nichts gedruckt wird.1
für Sie gearbeitet, gerade gesehen, dass es nicht geht, zurück 4 Tabellen, lol. Ich danke Ihnen sehr!lightuserdata
Werte übergeben vonLua state machine
?lua_setfield
.lua_setfield
erhält der Schlüssel den Wert.