You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Haxe表达式宏中如何不通过字符串获取类型?

解决方案

你需要的callX是一个自定义的宏函数,它接收类型引用表达式并返回对应的haxe.macro.Type实例,实现如下:

1. 定义宏函数

import haxe.macro.Context;
import haxe.macro.Expr;
import haxe.macro.Type;

macro function getTypeFromExpr(e:Expr):Type {
    // 将传入的类型表达式转换为ComplexType,再获取对应的Type实例
    return Context.getType(Context.toComplexType(e));
}

2. 使用方式

直接调用这个宏函数,传入目标类型即可:

var t = getTypeFromExpr(h2d.Object);

原理说明

  • Context.toComplexType(e):把h2d.Object这类类型引用表达式,转换为Haxe宏系统中用来描述类型的ComplexType结构。
  • Context.getType(ct):基于ComplexType解析出对应的Type实例,和原代码Context.getType("h2d.Object")的效果完全一致,但避免了硬编码字符串。

内容的提问来源于stack exchange,提问作者bh213

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 07:12:45