【问题标题】:Haxe Macro to create function variantsHaxe 宏创建函数变体
【发布时间】:2015-12-28 19:42:12
【问题描述】:

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

有这个宏吗?

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
}

【问题讨论】:

    标签: macros haxe


    【解决方案1】:

    没有内置宏。不过制作起来很简单。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-09
      • 2016-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多