我有一个函数嵌套在一组表中。在C/C++中有一种方法可以获取对该函数的“引用”,并在需要使用它时将它(和参数)推入堆栈中?在C/C++中引用Lua函数
13
A
回答
20
这就是reference system的用途。函数调用r = luaL_ref(L, LUA_REGISTRYINDEX)
将值堆栈顶部的值存储在注册表中,并返回一个整数,该整数可以存储在C端并用于通过函数调用lua_rawgeti(L, LUA_REGISTRYINDEX, r)
检索该值。
查看PiL chapter,以及luaL_ref()
,lua_rawgeti()
和luaL_unref()
的文档全文。
2
Lua API(http://www.lua.org/manual/5.1/manual.html#3)可用于访问任何需要的表成员。使用lua_gettable()提取一个表成员,并将它放在lua栈上,如果该成员也是一个表,只需再次调用lua_gettable()来访问此表,等等......
(取决于你正在做lua_rawget()可能会比一个更好的选择lua_gettable())
Addtional回应评论:
好吧这更有趣一点。那么,表是一个引用对象(或多或少),所以你可能安全地保存最内层的表引用。
由于lua API似乎没有办法直接操作表引用,所以您可能必须将ref推入全局,或者如果这不适用于具有单个表条目的新表。当你稍后想要参考时,只需从全球获得。
例如
// Final table reference is now at top of stack, after multiple dereferences
lua_setglobal(L, "mytableref");
相关问题
- 1. 的Lua - 引用函数中的表
- 2. 呼叫/ cc在Lua - 可能吗?
- 3. 在Lua中的函数
- 4. Lua:函数表
- 5. 如何从另一个lua函数调用lua函数?
- 6. lua中的数组索引
- 7. Lua弱引用
- 8. 从C++调用Lua函数
- 9. Lua - 找出调用函数
- 10. 从string_t调用Lua函数
- 11. lua中的全局函数
- 12. Alias CC引用Shell中的Clang?
- 13. 如何在Lua中使用middleclass在类中调用类函数
- 14. 声明Lua函数并使用正确的名称引用
- 15. 从Lua程序中调用python函数
- 16. 从lua脚本中调用c函数
- 17. 递归调用lua中的函数
- 18. 电晕Lua中调用外部函数
- 19. 在Lua中注册C++函数?
- 20. LuaJ - 在Java中创建Lua函数
- 21. 在文件中列出Lua函数
- 22. 在Lua中定义一个函数?
- 23. 如何在redis \ lua中定义函数?
- 24. 在Lua中创建回调函数
- 25. 在Lua表中注册C函数
- 26. Lua中失去引用
- 27. nodemcu Lua sqr函数
- 28. Lua函数声明
- 29. Lua合并函数
- 30. 在函数中引用(this)
我已经知道如何做到这一点:)我想在表格中深入地获取一个引用嵌套函数的函数,以便稍后可以在不遍历所有这些表的情况下调用该函数。 – jameszhao00 2009-09-13 15:54:19
[添加到答复] – 2009-09-13 17:01:57