Macros 用于创建函数变体的Haxe宏

Macros 用于创建函数变体的Haxe宏,macros,haxe,Macros,Haxe,我需要创建一些简单函数的编译时变体 这个有宏吗 function foo_$X() { //complicated stuff do($X); //more complicated stuff } 其中,$X只是已知集合中的一些常量值,为了便于论证,可以说[“a”、“b”、“c”] 在这个简单的示例中,我希望在编译时获得以下结果: function foo_a() { //complicated stuff do("a"); //more complicated st

我需要创建一些简单函数的编译时变体

这个有宏吗

function foo_$X()
{
  //complicated stuff

  do($X);

  //more complicated stuff
}
其中,$X只是已知集合中的一些常量值,为了便于论证,可以说[“a”、“b”、“c”]

在这个简单的示例中,我希望在编译时获得以下结果:

function foo_a()
{
 //complicated stuff

 do("a");

 //more complicated stuff
}

function foo_b()
{
 //complicated stuff

 do("b");

 //more complicated stuff
}

function foo_c()
{
 //complicated stuff

 do("c");

 //more complicated stuff
}

没有用于此的内置宏。然而,制作一个非常简单

这是建筑类型手册:

在您的情况下,您可能希望使用一些编译时元来标记您的方法,然后在构建类时,找到用元标记的方法,并将您编写的变体添加到类字段数组中。通过具体化,变体方法本身的组成非常简单,不需要任何复杂的AST操作