ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
表达式具体化用于以一个便捷的方式创建haxe.macro.Expr的实例。Haxe编译器接受通常的Haxe语法并翻译它到一个表达式对象。它支持几种转义机制,都是通过 $ 符号触发: * **${} 和 $e{}: Expr -> Expr** 这可以被用来合并表达式。 {}界限内的表达式被执行,使用它的值进行替换。 * **$a{}: Expr -> Array<Expr>** 如果用于一个 预期为Array<Expr>的位置(如调用参数,块元素),$a{} 把数组作为它的值。否则它生成一个数组声明。 * **$b{}:Array<Expr>->Expr** 从给定的表达式数组生成一个块级表达式。 * **$i{}:String->Expr** 从给定字符串生成一个标识符。 * **$p{}:Array<String>->Expr** 从给定字符串数组生成一个字段表达式。 * **$v{}:Dynamic->Expr** 根据它的参数的类型生成一个表达式。这仅仅保证使用在基本类型和枚举实例。 另外,元数据 @:pos(p) 可以用来映射注解表达式的位置到 p ,而不是被具体化的位置。 这类具体化只工作于 内部结构预期一个表达式时。不允许 object.${fieldName},但是 object.$fieldName 可以使用。这适用于所有内部构造预期一个字符串的位置: **字段访问** object.$name **变量名称** var $name = 1; **从Haxe 3.1.0 以后:** **字段名** { $name: 1} **函数名** function $name() { } **捕获变量名** try e() catch($name:Dynamic) { } 此外,一个新的表达式可以通过提供 haxe.macro.TypePath 参数被具体化: new $typePath()