2
我試圖「嵌套」從C註冊的兩個模塊。我試圖區分這些問題。如何在從Lua中的C註冊函數時將模塊嵌套到命名空間中?
這是我的「核心」模塊。它有一個名爲「setname可以」
int l_setName(lua_State *l)
{
// do something
return 0;
}
///////////////////////////////////////////////////////////////////////////////
static luaL_Reg const core_funcs [] =
{
{ "setName", l_setName },
{ NULL, NULL }
};
///////////////////////////////////////////////////////////////////////////////
void l_registerFuncs(lua_State * L)
{
luaL_newlib(L, core_funcs);
lua_setglobal(L, "Core");
}
///////////////////////////////////////////////////////////////////////////////
從Lua一個方法,你可以說Core.setName("hello world")
這裏是20個函數都做同一個域中一個複雜的子系統。
int l_importantFunction(lua_State *l)
{
// do something
return 0;
}
///////////////////////////////////////////////////////////////////////////////
static luaL_Reg const subSystem_funcs [] =
{
{ "importantFunction", l_importantFunction },
{ NULL, NULL }
};
///////////////////////////////////////////////////////////////////////////////
void l_registerFuncs(lua_State * L)
{
luaL_newlib(L, subSystem_funcs);
lua_setglobal(L, "Core.Subsystem");
}
///////////////////////////////////////////////////////////////////////////////
我想這個子系統在Core下注冊。我希望能夠說Core.Subsystem.importantFunction("Hi")
但是這不起作用。
什麼是地道的盧阿這樣做?
環顧四周人們如何註冊「物體」,似乎是這樣的could get very complicated。
您需要手動取'Core'表,然後使用'lua_setfield'(或類似)來創建該表中的'Subsystem'條目。 –
工作正常!謝謝!這是三行代碼。當SO讓我或你先做時,我會發布它。 \t lua_getglobal(L,「Core」); \t luaL_newlib(L,subSystem_funcs); \t lua_setfield(L,-2,「SubSystem」); – 010110110101