Je suis actuellement en utilisant le code suivant pour obtenir une valeur d'une table (cstring = const char *):Get entrée de table de lua de C via entier clé
template<>
cstring luaTable::get(cstring name) {
prep_get(name); // puts table[name] at -1 in stack
cstring result;
if(!lua_isstring(L, -1)) {
report(name, "is not a string");
result = "";
}
else {
result = lua_tostring(L, -1);
}
lua_pop(L, 1);
return result;
}
void luaTable::prep_get(cstring name) {
lua_pushstring(L, name); // name at -1, table at -2
lua_gettable(L, -2);
// table[name] is now at position -1 in stack
}
Cela fonctionne parfaitement pour les tables de forme table = {a=10, b=2}
. Comment puis-je le modifier pour obtenir des valeurs de tables sans clés telles que table = {10, 2}
?
Je suis sûr qu'il me manque quelque chose de simple mais n'arrive pas à trouver la réponse.
Merci à l'avance, Ben
Edit: ajouté quelques pops
À partir de certains documents: [lua_isnumber] Renvoie 1 si la valeur à l'index acceptable donné est un nombre ou une chaîne convertible en un nombre et 0 sinon. La fonction modifiée fonctionne bien (appel par exemple 'get (" 1 ")'). –
user1483596
Vous avez raison. Je vois ça maintenant (il utilise strtod en interne). – sergio