【问题标题】:Haxe macro: quote field properlyHaxe 宏:正确引用字段
【发布时间】:2015-11-17 11:42:10
【问题描述】:

(手动)引用字段的正确方法是什么?

考虑以下示例:

var name = "$type";
if(name.startsWith("$")) name = "@$__hx__" + name;
var e = macro {$name: "value"};

除了name.startsWith("$"),检查字段名称是否应该被引用的正确方法是什么?

【问题讨论】:

    标签: macros haxe


    【解决方案1】:

    就是这样……

    所有其他引用 - 除了前导 $ - 应该已经在具体化期间发生。

    class Test {
        static macro function makeObject(key:String, value:haxe.macro.Expr)
        {
            if (StringTools.startsWith(key, "$"))
                key = "@$__hx__" + key;
            return macro @:pos(haxe.macro.Context.currentPos()) { $key : $value };
        }
    
        static function main()
        {
            trace(makeObject("a", 1));
            trace(makeObject("0", 1));
            trace(makeObject(":", 1));
            trace(makeObject("$a", 1));
        }
    }
    

    【讨论】:

    • 所以你的意思是 startsWith("$") 是我需要关心的唯一情况?
    • @KevinResoL 据我所知 OCaml 来源。
    猜你喜欢
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多