如何比较作为参数传递的2个函数

时间:2015-11-12 14:10:24

标签: lua lua-api

我的应用程序可以使用以下代码在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是否引用相同的函数?

由于

劳伦

1 个答案:

答案 0 :(得分:1)

可以直接比较功能。要查看您是否具有相同的功能,需要将其与您已有的其他功能进行比较。

luaL_ref不会为您做比较(也不应该)。

如果你想这样做,除了luaL_ref(或可能代替)引用之外,你还应该保留一个带有推送功能作为键的lua表。然后,这将允许您在表中查找新函数并确定(在哈希表访问成本而不是列表遍历成本)是否已添加该函数。

相关问题