给定D中的函数声明,是否可以在编译时自省任何函数参数名称的字符串表示,以用于自动函数反射。 E.g。
void foo(int a, double b, string c) { }
register_function!(foo)()
register_function能否在编译时以与__traits(allMembers,someClass)类似的方式提取“a”,“b”,“c”?
答案 0 :(得分:4)
您可以使用std.traits.ParameterTypeTuple!()
来获取参数的类型,但我不知道如何获取其名称。然而,std.traits
正在不断改进,以便我得到补充。可能性只是因为没有人在考虑这个特殊需求,所以他们还没有添加它。我建议为它创建一个enhancement request,并且他们很有可能会添加它。
答案 1 :(得分:3)
我认为stringof的一个用途是给出名字。您可以通过一些工作解析它们。 OTOH stringof定义不明确,所以这有点脆弱。