根据成员的值将int转换为适当的枚举值

时间:2014-02-01 15:03:17

标签: enums d

我有enum类型,我想将整数值转换为该类型。这不起作用:

enum Code
{
   OK = 200,
   FAILURE = 400
} 

auto c = to!Code("200");

但这是:

enum Code
{
   OK = 200,
   FAILURE = 400
} 

Code c = to!Code("OK");

似乎to!(T)正在根据枚举成员的名称进行转换,而不是根据值进行转换。所以,我试过这个并且它正在运行:

Code c = cast(CodeEnum)200;

这是一种有效(且唯一)的方式来进行此转换吗?

1 个答案:

答案 0 :(得分:3)

在我看来,问题出在其他地方。这与DMD 2.064(在DPaste上测试)的预期相同

import std.conv;
import std.stdio;

enum Code
{
   OK = 200,
   FAILURE = 400
} 

void main()
{
    auto c = to!Code(200);
    writeln(c);
}

(link for convenience)

您确定Code的基础类型和to!Code的参数在您的情况下是否相同?这是转换的要求。