Lua - 对表中函数的引用
Lua - References to Functions Within Tables
如果我有一个全局表Table
,它有函数getValue()
、setValue()
等。 是否可以存储对Table.getValue
的引用,还是必须存储对Table
的引用,然后调用成员函数?
lua_getglobal(L, "Table");
lua_getfield(L, -1, "getValue");
getValueRef = luaL_ref(L, LUA_REGISTRYINDEX);
lua_getfield(L, -1, "setValue");
setValueRef = luaL_ref(L, LUA_REGISTRYINDEX);
lua_pop(L, 1); // Pop "Table" off of the stack
Lua 中没有"成员函数"这样的东西。只有一个函数,它是一个值。您可以将函数存储在任何位置,直接存储在全局表中,在您创建的其他表中等。函数(以及与此相关的所有Lua值)与它们碰巧存储的任何表都没有关联。
如果你想在某处存储一个函数(而创建一个"引用"只不过是把它存储在某个地方),你可以。
仅供参考:直接将注册表用于Lua"引用"不是一个好主意。我建议创建一个表,存储在注册表中的特定插槽中以用于参考。当然,我想说的是,使用"参考"来表示您正在做的事情不是一个好主意。
您始终可以创建一个"绑定"函数作为闭包:
local tbl=Table
local function TableGetValue(key)
return tbl:getValue(key)
end
do_stuff_with(TableGetValue)
相关文章:
- 区分接受常量参数的函数引用/指针和与函数参数同名的非常量参数
- 类 Referention 中C++回调函数引用非静态函数
- 使用函数引用指向节点的指针删除链表中的节点?
- 解释通过从函数引用返回数组的语法
- "Class1"类"Class2"对象作为私有数据成员。如何通过"Class 2"函数引用"Class1"对象?
- 使用默认构造函数引用成员变量初始化错误
- 无法调用函数引用 c++
- 使用 decltype(this) 获取函数引用
- 我应该如何定义返回指针的函数?(引用指针与指针指针)
- 从内联函数引用文件静态变量
- Boost::将sigaction函数引用绑定到实例
- 一种比函数引用更有效的方法
- 奇怪的未定义函数引用,函数调用C++不存在
- 是否可以检测绑定成员函数引用的对象是否被删除或销毁
- 构造函数引用参数导致seg错误
- 是否可以使函数模板从函数引用中获取“decltype”
- 无法让 Lua 函数引用"self"
- 如何解析变量和函数引用(Linker & Compiler)?
- 从不同模块调用函数 - 引用错误
- 如何在主函数中连接到数据库,然后从其他函数引用它