我试图在我的Component类上使用autoBuild宏,以便扩展Component的每个类都获得一个递增ID(0,1,2,3 ...),问题是它似乎haxe缓存了一些文件,因此当重新编译某些类不会被重建时,所以让我们说一些已经构建的类具有ID 0,1和2.现在我创建一些新类,它们也将获得ID 0,1和2因为已经构建的类没有被处理,所以它们不会增加ID。所以我最终得到了一些在生成的代码中具有相同ID的类。
我与autoBuild宏一起使用的代码是:
#if (macro)
public static function build():Array<Field>
{
var pos = Context.currentPos();
var c = macro : {
override function get_index()
{
return $v{componentCounter};
}
public static inline var INDEX = $v{componentCounter};
};
componentCounter++;
switch (c)
{
case TAnonymous(fields):
return Context.getBuildFields().concat(fields);
default:
throw 'unreachable';
}
}
#end
public static var componentCounter = 0;
有没有办法制作类似这样的作品?