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

Mar*_*ine 6 d function mixins

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

void function(int) func;
Run Code Online (Sandbox Code Playgroud)

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

x(func) == "func";
Run Code Online (Sandbox Code Playgroud)

?我觉得这可能是使用mixins,但我很困惑如何实现这一点.

Meh*_*dad 7

func.stringof
Run Code Online (Sandbox Code Playgroud)

是你需要的.

你也可以制作一个模板:

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

void func() { }
pragma(msg, Name!(func));    //prints func()
Run Code Online (Sandbox Code Playgroud)

  • @FeepingCreature:如果您正在进行反射或某种人类可读的自动序列化,那么这不是代码味道.我同意stringof非常不可靠(但这应该会改进). (3认同)