我在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