Как я могу сгенерировать main()
(доступ) метод для класса Haxe с помощью вызова конструктора?
Например
static function main() new App()
function new() {
//....
}
и я хочу создать это с помощью макроса, например:
import haxe.macro.Context;
import haxe.macro.Expr;
class Build {
macro public static function buildFields():Array<Field> {
var fields:Array<Field> = Context.getBuildFields();
var cls = Context.getLocalClass().get();
var pack = cls.pack.concat([cls.name]);
var name = pack.join(".");
fields.push({
name: "main",
access: [Access.APublic, Access.AStatic],
kind: FieldType.FFun({
expr: macro {
Type.createInstance(Type.resolveClass($v{name}), []);
},
args: [],
ret: null
}),
pos: Context.currentPos()
});
return fields;
}
}
@:build(Build.buildFields())
class App {
function new() {
//....
}
}
Это генерирует метод main()
, но я не уверен, как генерировать new App()
вместо того, чтобы прибегать к Type.createInstance()
.