Frage

In Lua, mit dem C Schnittstelle, eine Tabelle, wie iterieren ich durch die Schlüssel / Wert-Paare der Tabelle?

Auch wenn einige Tabelle Tabelle Mitglieder Arrays hinzugefügt werden, muss ich eine separate Schleife brauchen auch durch diejenigen zu durchlaufen, oder gibt es eine einzige Art und Weise, obwohl jene Mitglieder zur gleichen Zeit wie die Schlüssel / Wert-Paare zu wiederholen?

War es hilfreich?

Lösung

lua_next() ist genau die gleiche wie Lua next() Funktion, die durch die pairs() Funktion verwendet wird. Es iteriert alle Mitglieder, die beide in dem Array-Teil und dem Hash-Teil.

Wenn Sie die analog ipairs() wollen, gibt der lua_objlen() Sie die gleiche Funktionalität wie #. Verwenden Sie es, und lua_rawgeti() numerisch über das Array Teil laufen.

Andere Tipps

Wie Javier sagt, möchten Sie die lua_next() Funktion. Ich dachte, ein Code-Beispiel Dinge helfen könnte klarer, da dies ein wenig schwierig sein kann, auf den ersten Blick zu verwenden.

aus dem Handbuch Zitiert:

  

Eine typische Traversal sieht wie folgt aus:

/* table is in the stack at index 't' */
lua_pushnil(L);  /* first key */
while (lua_next(L, t) != 0) {
   /* uses 'key' (at index -2) and 'value' (at index -1) */
   printf("%s - %s\n",
          lua_typename(L, lua_type(L, -2)),
          lua_typename(L, lua_type(L, -1)));
   /* removes 'value'; keeps 'key' for next iteration */
   lua_pop(L, 1);
}

Beachten Sie, dass lua_next() auf den Schlüsselwert ist sehr empfindlich auf den Stapel gelassen. Nicht Anruf lua_tolstring() auf dem Schlüssel, wenn es wirklich bereits ein String ist, weil die Funktion ersetzen der Wert wandelt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top