是否有可能在D中获取枚举成员的名称和值?

Aft*_*ock 9 reflection d

我想从enumD2中的类型中获取名称和值.我知道我可以使用std.traits获取枚举值,但名称呢?

鉴于:

enum lst
{
  apple,
  bottle,
  orange,
  blue    
}
Run Code Online (Sandbox Code Playgroud)

我想得到一个像关联数组.

string lstmap[int] = [1:"apple", 2:"bottle", 3:"orange", 4:"blue"].
Run Code Online (Sandbox Code Playgroud)

答案是肯定的.有人向我展示的解决方案是:

foreach (i, member; __traits(allMembers, lst)) {
  lstmap[cast(int) __traits(getMember, lst, member)] = member;
}
Run Code Online (Sandbox Code Playgroud)

BCS*_*BCS 13

foreach (i, member; __traits(allMembers, lst)) {
  lstmap[cast(int) __traits(getMember, lst, member)] = member;
}
Run Code Online (Sandbox Code Playgroud)

(从问题中复制为社区维基)