luaL_openlib替换为Lua 5.2
发布时间:2020-12-15 00:22:49 所属栏目:大数据 来源:网络整理
导读:我正在修改为Lua 5.2接到电话我不知道相当于: luaL_openlib(L,"Polycore",polycoreLib,0); 其中polycoreLib是 static const struct luaL_Reg polycoreLib [] 如何替换luaL_openlib的调用? lua维基只有states: Calls such as luaL_openlib(L,name,lreg,x);
我正在修改为Lua< 5.2接到电话我不知道相当于:
luaL_openlib(L,"Polycore",polycoreLib,0); 其中polycoreLib是 static const struct luaL_Reg polycoreLib [] 如何替换luaL_openlib的调用? lua维基只有states:
解决方法
有两个答案:一个用于复制这里的早期版本的行为(创建一个全局表),另一个用于实现现在常规的行为(即创建和返回匿名表)。
对于前者: lua_newtable(L); luaL_setfuncs(L,0); lua_setglobal(L,"Polycore"); 这与luaL_openlib不完全相同,因为如果存在一个现有的全局表Polycore,它将覆盖它而不是与它合并。如果合并是一个问题,首先使用lua_getglobal,然后如果它推一个表重新使用而不是创建一个新的表: lua_getglobal(L,"Polycore"); if (lua_isnil(L,-1)) { lua_pop(L,1); lua_newtable(L); } luaL_setfuncs(L,"Polycore"); 后者更容易,因为您不需要关心合并: lua_newtable(L); luaL_setfuncs(L,0); return 1; 使用这种方法,调用者的责任是绑定表,如: local Polycore = require "Polycore" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |