Можно ли получить имена и значения членов перечисления в D?

Я хотел бы получить имена и значения из типа enum в D2. Я знаю, что могу получить значения перечисления, используя std.traits, но как насчет имен?

Дано:

enum lst
{
  apple,
  bottle,
  orange,
  blue    
}

Я хотел бы получить ассоциативный массив вроде.

string lstmap[int] = [1:"apple", 2:"bottle", 3:"orange", 4:"blue"].

Ответ - да. Как мне показали, решение:

foreach (i, member; __traits(allMembers, lst)) {
  lstmap[cast(int) __traits(getMember, lst, member)] = member;
}
9
задан BCS 23 July 2011 в 15:20
поделиться