我的应用程序可以使用以下代码在Todo列表中推送函数: 功能测试() 打印( “coucou”) 端
todo:pushtask( test ) -- First push
todo:pushtask( test ) -- Second push
在内部,todo列表是一个整数的C表,其中我推送对传递函数的引用:
int func = luaL_ref(L, LUA_REGISTRYINDEX);
但是如何检测我是否正在推动相同的功能呢? 根据我的测试,即使推送相同的函数,luaL_ref返回也会执行不同的引用(假设参考#1和#2) 如何检查#1和#2是否引用相同的函数?
由于
劳伦
答案 0 :(得分:1)
可以直接比较功能。要查看您是否具有相同的功能,需要将其与您已有的其他功能进行比较。
luaL_ref
不会为您做比较(也不应该)。
如果你想这样做,除了luaL_ref
(或可能代替)引用之外,你还应该保留一个带有推送功能作为键的lua表。然后,这将允许您在表中查找新函数并确定(在哈希表访问成本而不是列表遍历成本)是否已添加该函数。