在 haxe 宏中,如何使用类型名称获取类型

问题描述 投票:0回答:1

在 haxe 表达式宏中,我有以下代码:

var t = haxe.macro.Context.getType("h2d.Object");

我想在不使用字符串的情况下获取类型。像这样的东西:

var t = callX(h2d.Object);

问题是

callX
应该是什么?

macros haxe
1个回答
0
投票

您可以使用 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>,[])

© www.soinside.com 2019 - 2024. All rights reserved.