Question

Dans Lua, en utilisant le C Interface, étant donné une table, comment puis-je itérer les paires clé / valeur de la table?

En outre, si certains membres de la table de table sont ajoutés à l'aide des tableaux, ai-je besoin d'une boucle séparée pour itérer ceux aussi bien ou est-il un moyen unique pour itérer si les membres en même temps que les paires clé / valeur?

Était-ce utile?

La solution

lua_next() est la même chose que la fonction next() de Lua, qui est utilisé par la fonction pairs(). Elle parcourt tous les membres, les deux dans la partie du tableau et la partie de hachage.

Si vous voulez l'analogue de ipairs(), le lua_objlen() vous donne les mêmes fonctionnalités que #. Utilisez-le et lua_rawgeti() itérer numériquement sur la partie de tableau.

Autres conseils

Comme dit Javier, vous voulez que la fonction lua_next() . Je pensais un exemple de code pourrait aider à rendre les choses plus claires car cela peut être un peu difficile à utiliser au premier coup d'œil.

Je cite le manuel:

  

Un traversal typique ressemble à ceci:

/* 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);
}

Sachez que lua_next() est très sensible à la valeur de clé à gauche sur la pile. Ne pas appel lua_tolstring() sur la clé que si elle est vraiment déjà une chaîne parce que fonction remplacer la valeur convertit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top