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

How to compare 2 functions passed as argument

我的应用程序可以使用如下代码将功能推送到 Todo 列表中: 功能测试() 打印("coucou") 结束

todo:pushtask( test )  -- First push
todo:pushtask( test )  -- Second push

在内部,待办事项列表是一个 C table 整数,我在其中推送对传递函数的引用取自:

int func = luaL_ref(L, LUA_REGISTRYINDEX);

但是我如何检测我是否在推送相同的功能? 根据我的测试,即使推送相同的函数,luaL_ref 返回也会执行不同的引用(假设引用 #1 和 #2) 如何检查#1 和#2 是否引用了同一函数?

谢谢

洛朗

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

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

如果你想这样做,除了 luaL_ref(或可能代替)参考之外,你还应该保留一个 lua table,其中推送函数作为键。这将让您在 table 中查找新函数并确定(在散列 table 访问成本而不是列表遍历成本)之前是否已添加该函数。