我有一个函数嵌套在一组表中。在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中使用middleclass在类中调用类函数
- 6. Alias CC引用Shell中的Clang?
- 7. 声明Lua函数并使用正确的名称引用
- 8. 从Lua程序中调用python函数
- 9. 在Lua中创建回调函数
- 10. LuaJ - 在Java中创建Lua函数
- 11. 在Lua表中注册C函数
- 12. 在Lua中定义一个函数?
- 13. Lua中失去引用
- 14. Lua合并函数
- 15. nodemcu Lua sqr函数
- 16. 在函数中引用(this)
- 17. 不能得到一个Lua函数来引用'自我'
- 18. Lua:如何从C中引用lua类中的lua方法以备后用?
- 19. 在setfenv函数内调用函数时的Lua环境
- 20. lua从函数名字符串中调用函数
- 21. 从.lua的使用手柄调用lua函数?
- 22. 在C++中使用table.subtable调用lua函数
- 23. LUA:使用其名称(字符串)在类中调用函数
- 24. 什么是“var cc = cc = cc || {};”在Cocos2D中做什么?
- 25. 添加Lua函数语法
- 26. Lua C API和metatable函数
- 27. 模板函数绑定lua
- 28. lua userdata C++析构函数
- 29. 存储一个Lua函数?
- 30. 黑客Lua - 注入新的函数到内置的Lua中
我已经知道如何做到这一点:)我想在表格中深入地获取一个引用嵌套函数的函数,以便稍后可以在不遍历所有这些表的情况下调用该函数。 – jameszhao00 2009-09-13 15:54:19
[添加到答复] – 2009-09-13 17:01:57