2012-04-12 7 views
3

Ich habe eine Methode namens GetParameter in C. Und ich möchte es von Lua verwenden. Diese Methode wird wieder einige Werte an Lua zurückgeben.Zurückgeben einer Tabelle no global von lua nach C

Die Art und Weise, dass Im die Tabelle in C die häufigste Art und Weise baut:

lua_newtable(L); 
for (int i = 0; i < parameters; i++) 
{ 
    lua_pushnumber(L,i); 
    lua_pushstring(L,myParameter); 
    lua_settable(L,-3); 
} 

In allen Beispielen, die ich gesehen habe, nach diesem, Sie mit lua setglobal die Ergebnistabelle gesetzt haben:

//set name for the result 
lua_setglobal(ptLuaState, "resultTable"); 

Mit dieser Methode kann ich zu der Ergebnistabelle in lua zuzugreifen, wie folgt aus:

GetParameter("V111","V111Parameter") 
printTable(resultTable); 

Doing Das alles läuft gut, aber es gibt einen anderen Weg dies zu tun, ohne setglobal zu benutzen? Ich habe versucht, etwas wie zu tun:

local mytable=GetParameter("V111","V111Parameter"); 

aber funktioniert nicht. Globale Variablen zu verwenden ist besser? Wie bekomme ich die Ergebnistabelle, ohne das Setglobal zu erstellen?

danke im voraus!

Antwort

5

Rufen Sie nicht setglobal auf und geben Sie 1 von Ihrer C-Funktion zurück. Das sagt lua, es gibt 1 Rückgabewert von Ihrer Funktion, und Ihr letztes Beispiel wird funktionieren.