Ich muss Operationen auf Lua-Tabellen von C ausführen, wo die Tabellen als Listen oder Warteschlangen behandelt werden. Insbesondere muss ich ein Element am Kopf einfügen und das Kopfelement entfernen und die anderen Elemente verschieben, um das neue Element aufzunehmen.Wie lua Tabelle Operationen von C zu tun?
Dies wäre einfach in gerade lua, würde ich table.insert
und table.remove
verwenden. Aber in C?
Es sind Funktionen in der Lua C api wie lua_settable, aber keine Mittel für table.insert
und table.remove die taucht sind. Es sieht so aus, als ob interne C Funktionen innerhalb des Interpreters tinsert
und tremove
sind, aber sie sind nicht Teil der API.
Muss ich wirklich zu einer Lua-Funktion rufen, die das für mich tut?
danke. Aber wenn ich aus meinem Code tinsert versuchte, scheitert es, weil der Rückgabewert von lua_gettop nicht das ist, was er erwartet. Es gibt bereits einige Werte auf dem Stapel, also gibt lua_gettop etwa 24 zurück, und diese Funktion erwartet, dass es die Anzahl der übergebenen Argumente ist, wie 2 oder 3. –
Schieben Sie zum Beispiel Position und Wert im Stapel vor rufst du tinsert an? –
yeah, die Funktion kann aus verschiedenen Kontexten aufgerufen werden, in denen der Stapel bereits verschiedene Mengen an Material enthält. Also fügte ich meiner Version von tinsert eine zusätzliche Variable für den Stapeloffset hinzu und machte die Interna meines Tiltserts mit diesem Offset. Jetzt funktioniert es. Vielen Dank. –