如何将 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++
广告