有时需要向函数传递相对比较复杂的数据,定义多个形参显得很难看,C语言函数中通常传递一个数据结构,而对于lua最直接的莫过于传递一个table数据。C调用lua函数时,也可以通过构造table数据传递给lua函数。
基本步骤比较简单,大致是(1)获取lua函数(2)在栈中构造一个table(3)向table中压入相应的数据(key-value)(4)执行lua函数。
以下伪码详细描述了这个过程:
......
lua_getglobal(L, "demoFunc"); // 获取Lua函数名
lua_newtable(L); // 创建一个table
lua_pushstring(L, "intVal"); //key为intVal
lua_pushinteger(L,1234); //值为1234
lua_settable(L, -3); //写入table
lua_pushstring(L, "strVal"); //key为strVal
lua_pushstring(L, "yxh"); //值为yxh
lua_settable(L, -3); //写入table
lua_pcall(L,1,0,0); // 调用demoFunc函数
......