库指南

lua-users home
wiki

没有官方的指南,但按照这里说明的来做可能不错。

如果不符合社区习惯,请随意修改。此页面尚未完成。

注册函数

这是常见的做法。调用 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;
}

注册 userdata 的元表

您应该使用 luaL_newmetatable,它会推送一个给定名称的元表。如果元表不存在,它会创建并推送它,这样您就可以填充它了。例如:

	if(luaL_newmetatable(L, "metatable name")){
		/* fill it in */
	}

您应该小心元表名称,以避免与其他模块发生冲突。例如,您可以使用 URI 作为 XML 文档中的命名空间。


RecentChanges · preferences
编辑 · 历史
最后编辑于 2009 年 6 月 18 日上午 5:37 GMT (差异)