我一直在玩 Neko Modules,但我认为我遇到了一些不一致的行为。
var funcs = 0;
var objs = 0;
for (i in 0...m.globalsCount())
{
var obj:Dynamic = m.getGlobal(i);
if (Reflect.compareMethods(obj, init))
trace("matched");
if (Reflect.isFunction(obj))
funcs++;
else if (Reflect.isObject(obj))
objs++;
}
trace('Functions: $funcs');
trace('Objects: $objs');
在上面的代码中,当我第一次运行它时,我一共得到了 4487 个函数。如果我删除一个函数,重建并运行,我会得到预期的 4486。
我添加了compareMethods
比较来比较obj
with init
,这init
是我在主文件中声明的函数,但从不输出跟踪。
我浏览了该compareMethods
函数的代码提示,偶然发现了以下术语:if 'f1' and the 'f2' are **physically** equal
.
现在,它们都是函数,在 Haxe 手册中没有任何地方提到物理函数。所以我有一个两部分的问题,真的。
什么是物理功能,我如何实现您在上面所期望的跟踪结果?先感谢您。