有没有办法将函数变量转换为D中的字符串?

时间:2011-06-21 07:27:40

标签: function d mixins

在给定函数变量的情况下,有没有办法将函数的名称作为字符串?例如,如果我有:

void function(int) func;

是否有一些函数x(),我可以得到:

x(func) == "func";

?我觉得使用mixins是可能的,但我对如何实现它感到困惑。

2 个答案:

答案 0 :(得分:7)

func.stringof

是你需要的。

你也可以制作一个模板:

template Name(alias Func) { enum Name = Func.stringof; }

void func() { }
pragma(msg, Name!(func));    //prints func()

答案 1 :(得分:0)

我想到的最简单的解决方案:

您可以将其名称存储在字符串中,并在必要时mixin编辑,例如:

string func_name = "func";
...
int param = 294;
mixin(func_name ~ "(" ~ to!string(param) ~ ")");