Search code examples
reflectiond

Is it possible to get the names and values of the members of an enum in D?


I would like to get the names and values from an enum type in D2. I know I can get enum values using std.traits but what about the names?

Given:

enum lst
{
  apple,
  bottle,
  orange,
  blue    
}

I would like to get an associative array like.

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

The answer is yes. The solution, as someone showed me is:

foreach (i, member; __traits(allMembers, lst)) {
  lstmap[cast(int) __traits(getMember, lst, member)] = member;
}

Solution

  • foreach (i, member; __traits(allMembers, lst)) {
      lstmap[cast(int) __traits(getMember, lst, member)] = member;
    }
    

    (copied from question as community wiki)