库指南 |
|
如果不符合社区习惯,请随意修改。此页面尚未完成。
这是常见的做法。调用 luaL_register 时,可以将 "modulename" 替换为 NULL。require 函数会做必要的工作,将模块注册到 package.loaded[modulename],模块名称也易于更改。
static const luaL_reg register_module[] = {
{ "lua_function_name", c_function_name },
...
{ NULL, NULL }
};
LUALIB_API int luaopen_modulename(lua_State* L) {
luaL_register(L, "modulename", register_module);
return 1;
}
您应该使用 luaL_newmetatable,它会推送一个给定名称的元表。如果元表不存在,它会创建并推送它,这样您就可以填充它了。例如:
if(luaL_newmetatable(L, "metatable name")){
/* fill it in */
}
您应该小心元表名称,以避免与其他模块发生冲突。例如,您可以使用 URI 作为 XML 文档中的命名空间。