我需要创建一些简单函数的编译时变体。
这有宏吗?
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
}
答案 0 :(得分:0)
没有内置宏。然而,制作一个很简单。
这是建筑类型的手册:http://haxe.org/manual/macro-type-building.html
在您的情况下,您可能希望使用一些编译时元标记您的方法,然后在构建类时,找到标记为meta的方法并添加您组成的类字段数组。变体方法本身的组合非常简单,使用了具体化,并且不需要任何复杂的AST操作。