如何将 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); //获取表a作为参数 lua_pcall(L ,1,0,0); printf(" \nI am done with Lua in C++.\n"); lua_close(L);
在上面的代码中,对lua_pushvalue(L,-2)的调用发挥了神奇的作用,因为它使我们能够将表a作为参数传递。
输出结果
11 I am done with Lua in C++