D:函数参数名称内省

时间:2010-11-03 00:13:56

标签: d introspection

给定D中的函数声明,是否可以在编译时自省任何函数参数名称的字符串表示,以用于自动函数反射。 E.g。

void foo(int a, double b, string c) { }
register_function!(foo)()

register_function能否在编译时以与__traits(allMembers,someClass)类似的方式提取“a”,“b”,“c”?

2 个答案:

答案 0 :(得分:4)

您可以使用std.traits.ParameterTypeTuple!()来获取参数的类型,但我不知道如何获取其名称。然而,std.traits正在不断改进,以便我得到补充。可能性只是因为没有人在考虑这个特殊需求,所以他们还没有添加它。我建议为它创建一个enhancement request,并且他们很有可能会添加它。

答案 1 :(得分:3)

我认为stringof的一个用途是给出名字。您可以通过一些工作解析它们。 OTOH stringof定义不明确,所以这有点脆弱。