D: самоанализ имени параметра функции - PullRequest
6 голосов
/ 03 ноября 2010

Учитывая объявление функции в D, можно ли во время компиляции анализировать строковое представление любых имен параметров функции для использования в, скажем, автоматическом отражении функции.Например,

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

Может ли register_function извлечь "a", "b", "c" во время компиляции аналогично тому, как __traits (allMembers, someClass) для класса?

Ответы [ 2 ]

4 голосов
/ 03 ноября 2010

Вы можете использовать std.traits.ParameterTypeTuple!() для получения типов параметров, но я не знаю, как получить их имена. Тем не менее, std.traits постоянно совершенствуется, так что я добавлю. Скорее всего, никто из работающих над этим не задумывался об этой конкретной потребности, поэтому они еще не добавили ее. Я бы предложил создать запрос на улучшение для него, и есть большая вероятность, что они его добавят.

3 голосов
/ 03 ноября 2010

Я думаю, что одно из применений stringof дает имена. Вы можете разобрать их с небольшим количеством работы. OTOH stringof плохо определен, так что это будет немного хрупким.

...