如何將 Lua 表作為引數進行推送?


當需要將 Lua 表作為引數推送至把 Lua 作為嵌入式語言使用的 C++ 語言中編寫程式碼時,我們需要利用 Lua 庫提供的各種 API 函式。

示例

Lua 程式碼將類似下面所示程式碼 −

a = {
   numb = 10,
   create = function(a)
      print(a);
   end,
increment = function(self)
   --self.numb = 11;
   print(self.numb);
end,
decrement = function(self,i)
   self.numb = self.numb-i;
   print(self.numb);
end
};
b = a;

呼叫 Lua 函式的 C++ 程式碼將如下所示 −

luaL_openlibs(L);
luaL_dofile (L,"main.lua");
lua_getglobal(L, "a");
lua_getfield(L, -1, "increment");
lua_pushvalue(L,-2); // get the table a as the argument
lua_pcall(L ,1,0,0);
printf(" 
I am done with Lua in C++.
"); lua_close(L);

在上述程式碼中,對 lua_pushvalue(L,-2) 的呼叫是完成這項工作的操作,因為它使我們能夠將表 a 作為引數進行傳遞。

輸出

11
I am done with Lua in C++

更新於: 2021 年 7 月 19 日

564 次瀏覽

開啟您的 職業生涯

完成課程,獲得認證

開始
廣告
© . All rights reserved.