存储Lua功能?

Nic*_*unt 22 c lua function

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

Jav*_*ier 26

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

  • Lua ref太酷了 - 无法相信我一直在使用Lua而不知道这个功能.谢谢! (2认同)

and*_*ers 14

基于Javier的答案,Lua有一个特殊的通用访问表,称为注册表,可以使用伪索引通过C API访问LUA_REGISTRYINDEX.您可以使用该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);
Run Code Online (Sandbox Code Playgroud)