是否可以获取 D 中枚举成员的名称和值?
我想从 D2 中的 enum
类型获取名称和值。我知道我可以使用 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;
}
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;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
(从社区维基的问题复制)
(copied from question as community wiki)
如果您只想将其用于值到字符串的转换,请考虑使用
std.conv.to!string(lst.orange)
— 将计算为"orange"
。In case you want this solely for purposes of value-to-string convertation, consider using
std.conv.to!string(lst.orange)
— will evaluate to"orange"
.