如何将 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 次浏览

开启您的 职业生涯

完成课程,获得认证

开始
广告