Я играл с модулями Neko, но я думаю, что у меня какое-то непоследовательное поведение.
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
с init
, где init
— это функция, которую я объявил в основном файле, но трассировка никогда не выводится.
Я взглянул на подсказку кода для функции compareMethods
и наткнулся на следующую терминологию: if 'f1' and the 'f2' are **physically** equal
.
Обе они являются функциями, и нигде в руководстве Haxe ничего не говорится о физических функциях. Итак, у меня есть вопрос из двух частей, на самом деле.
Что такое физическая функция и как добиться результата трассировки, который вы ожидаете выше? Заранее спасибо.