的Lua表返回值我有一個Lua函數返回表(包含組字符串) 功能運行正常使用此代碼:如何閱讀從C++
lua_pushstring (lua, "funcname");
lua_gettable (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);
函數返回一個表。我如何從我的C++代碼中讀取它的內容?
的Lua表返回值我有一個Lua函數返回表(包含組字符串) 功能運行正常使用此代碼:如何閱讀從C++
lua_pushstring (lua, "funcname");
lua_gettable (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);
函數返回一個表。我如何從我的C++代碼中讀取它的內容?
如果你問如何遍歷結果表,你需要lua_next(該鏈接還包含一個例子)。由於egarcia表示,如果lua_pcall
返回0,函數返回的表可以在堆棧頂部找到。
如果函數沒有拋出任何錯誤,那麼lua_pcall會:
這意味着,如果你的功能不會拋出任何錯誤,你可以馬上使用lua_setfield - lua_pcall
就像lua_call:
lua_pushstring (lua, "funcname");
lua_gettable (lua, LUA_GLOBALSINDEX);
lua_pushstring(lua, "someparam");
lua_pcall (lua, 1, 1, 0);
lua_setfield(L, LUA_GLOBALSINDEX, "a"); /* set global 'a' */
是等價的:
a = funcname(someparam)
'lua_next()'將枚舉表的所有內容,但是,如果索引已知,則直接訪問表可能更容易。如果已知索引,'lua_gettable()','lua_getfield()','lua_rawget()'或者'lua_rawgeti()'都可以訪問表的內容。 – gwell 2010-10-19 19:40:17
@ gwell:true,但考慮到OP在他的示例中使用了'lua_gettable',我假定他至少已經知道其中的一些。 – sbk 2010-10-20 12:18:24