小编var*_*dig的帖子

使用构建宏生成构造函数调用

如何main()使用构造函数调用为 Haxe 类生成(访问)方法?

例如

static function main() new App()

function new() {
    //....
}

Run Code Online (Sandbox Code Playgroud)

我想用宏创建它,如下所示:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)
@:build(Build.buildFields())
class App {
    function new() {
        //.... …
Run Code Online (Sandbox Code Playgroud)

macros haxe

3
推荐指数
1
解决办法
181
查看次数

标签 统计

haxe ×1

macros ×1