我正在为适应一个针对Lua < 5.2编写的库而努力,但遇到了一个我不知道相等的调用:
luaL_openlib(L, "Polycore", polycoreLib, 0);
其中 polycoreLib
是一个
static const struct luaL_Reg polycoreLib []
我该如何替换对luaL_openlib
的调用?
lua官方文档中只有这样一句话:"[在Lua5中]诸如luaL_openlib(L, name, lreg, x);
的调用需要小心重新编写,因为会搜索并可能创建一个给定名称的全局表格。"
luaL_setfuncs
函数使用栈顶的表进行操作。因此,将现有表与之合并只需要将该表放到栈顶,而不是使用一个新的表。如果已经可以通过全局名称获取该表,则其仍可通过全局名称获取。显然,您无法合并具有相同键的表。如果您需要这样做(或子表),则需要手动处理。 (对于子表很容易,只需创建一个新表并将其插入到获取的表中即可。) - Etan Reisner