枚举反思

时间:2013-11-05 21:09:27

标签: reflection foreach d enumeration

D是否提供了一种反映枚举值的方法,比如说e,通常迭代它的每个值与结构和类的.tupleof类似。我想我们总能做到

foreach (val; e.min..e.max)

但是不连续的枚举呢?并且枚举包括最大值,但范围不包括。

更新:我刚发现:http://dlang.org/phobos/std_traits.html#.EnumMembers

我相信这一切我们需要的吗?

1 个答案:

答案 0 :(得分:8)

std.traits.EnumMembers可以做到,__traits(allMembers,YourEnum)也可以。

foreach(value, name; EnumMembers!YourEnum) { }听起来就像你想要的那样。