存储Luafunction?

从C 调用Lua函数是相当简单的,但有没有办法 Lua函数存储在某处供以后使用? 我想存储传递给我的C函数的用户定义的Lua函数以用于事件,类似于Connect函数在wxLua中的工作方式 。

检查注册表( luaL_ref() )。 它管理一个简单的表,允许您存储任何Lua值(如函数),并通过一个简单的整数从C引用它。

基于Javier的回答,Lua有一个特殊的通用访问表,称为注册表,可以使用伪索引LUA_REGISTRYINDEX通过C API访问。 您可以使用luaL_ref函数在注册表中存储您喜欢的任何Lua值(包括Lua函数)并接收一个可用于从C引用它的整数:

 // Assumes that the function you want to store is on the top of stack L int function_index = luaL_ref(L, LUA_REGISTRYINDEX); 

最简单的方法是让你的函数采用“名称”和lua函数文本。 然后在解释器中创建一个表(如果它不存在),然后使用named参数将该函数存储在表中。

在您的应用程序中,只需保留与每个事件关联的函数名称列表。 当事件触发时,只需调用表中的所有函数,其中的键与列表中的名称匹配。