Haxe Macro创建函数变体

时间:2015-12-28 19:42:13

标签: 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 stuff
}

function foo_b()
{
 //complicated stuff

 do("b");

 //more complicated stuff
}

function foo_c()
{
 //complicated stuff

 do("c");

 //more complicated stuff
}

1 个答案:

答案 0 :(得分:0)

没有内置宏。然而,制作一个很简单。

这是建筑类型的手册:http://haxe.org/manual/macro-type-building.html

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