我在C.写入多个模块为lua每个这些包含一个Lua用户数据的类型和予加载和使用它们是这样的:的Lua含包的子包
A = require("A")
B = require("B")
a = A.new(3,{1,2,3})
b1 = B.new(1)
b2 = B.new(2) * b1
现在我想把两者用户数据类型在一个单一的共享库AandB
可以这样
AB = require("AandB")
AB.A.new(3,{1,2,3})
什么是实现一个很好的方式来使用?现在我luaopen_*
功能看起来像这样
int luaopen_A(lua_State *L) {
luaL_newmetatable(L, A_MT);
luaL_setfuncs(L, A_methods, 0);
luaL_newlib(L, A_functions);
return 1;
};
,并有可能再仍然只加载部分,例如像这样:A = require("AandB.A")
?
你也可以用C来做到这一点,甚至可能把所有三个模块放在同一个'.so'中。此外,如果模块嵌套在文件系统中,则应该可以加载子模块而不加载主模块并将字段编入索引。 – 2014-12-05 00:10:09