在 haxe 表达式宏中,我有以下代码:
var t = haxe.macro.Context.getType("h2d.Object");
我想在不使用字符串的情况下获取类型。像这样的东西:
var t = callX(h2d.Object);
问题是
callX
应该是什么?
您可以使用 type reification 然后将 ComplexType 转换为您想要的类型,就像这样
var t1 = Context.getType("haxe.format.JsonParser");
var t2 = ComplexTypeTools.toType(macro:haxe.format.JsonParser);
trace(t1, t2);
TInst(haxe.format.JsonParser,[]),TInst(haxe.format.JsonParser,[])
如果你需要允许将类型传递给宏,你可以使用
Context.typeof(expr)
,这会给你一个TType(Class<haxe.format.JsonParser>,[])