来自C的Calling a Lua function是相当直接的,但有没有办法商店一个Lua函数的某处供以后使用?我想存储用户定义的Lua函数传递给我的C函数以用于事件,类似于Connect function works in wxLua。存储一个Lua函数?
18
A
回答
23
检查注册表(luaL_ref()
)。它管理一个简单的表格,让你存储任何Lua值(比如函数),并用一个简单的整数从C中引用它。
0
最简单的方法是让你的函数获取一个“名称”和lua函数文本。然后在解释器中创建一个表(如果它不存在),然后使用named参数将该函数存储在表中。
在您的应用程序中,只保留与每个事件关联的函数名称列表。当事件触发时,只需调用表中与列表中的名称匹配的所有函数。
+0
Javier说这个功能已经存在,并且是Lua的参考表。 – 2009-02-10 17:38:38
13
基于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);
相关问题
- 1. 在Lua中定义一个函数?
- 2. 写一个存储函数返回一个rowid数组
- 3. Lua:存储在数组中的变量
- 4. Lua:函数表
- 5. 在luabind存储一个LUA类与父::对象
- 6. MonetDB存储()函数
- 7. Lua合并函数
- 8. nodemcu Lua sqr函数
- 9. JS - 在一个变量中存储一个函数的参数用于另一个函数
- 10. foreach数组函数存储在一个变量?
- 11. mysql存储函数参数
- 12. 用参数转储lua func
- 13. 如何调用由Oracle plsql中另一个存储函数返回的名称的存储函数?
- 14. Lua函数在使用Luabind比较存储的C++对象指针时崩溃
- 15. 将几个Lua表保存在一个小数据库中?
- 16. 在另一个函数中自动从列表中存储变量的函数
- 17. 递归存储函数
- 18. 存储过程和函数
- 19. mySQL存储函数问题
- 20. 存储函数模板
- 21. 在fortran 90中存储一个“函数指针”?
- 22. 从另一个PL/Python块调用postgres PL/Python存储函数
- 23. 执行函数存储为一个字符串在c + +
- 24. 存储函数结果在一个向量中
- 25. 存储到一个函数内的地图
- 26. 创建一个线程来运行Postgres存储函数
- 27. 从var中存储的表达式定义一个函数
- 28. 找到的所有存储过程调用一个函数
- 29. SQL存储函数给出了一个错误
- 30. 函数名是如何存储在一个IIFE?
Lua的裁判是太酷了 - 不能相信我一直在使用Lua而不知道这个功能。谢谢! – 2009-02-16 19:44:14