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

标签 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;

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

最佳答案

在我看来,问题出在其他地方。这与 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 的参数在您的情况下是相同的吗?这是转换的要求。

关于enums - 根据成员的值将 int 转换为适当的枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21499652/

相关文章:

java - 下面的 java 枚举类的主体是如何工作的?

java - 从 Java 枚举调用随机值

Scala - 枚举与案例类

java - 映射两个相关的枚举?

json - std.json - 与 TRUE、FALSE 和 NULL 值有点混淆

'D'语言是否支持VLA之类的 'C'?

vbscript - 使用 vbscript 枚举

multithreading - D 语言 - 线程与生成

templates - 有没有办法使用 mixin 或模板从 D 中的类生成接口(interface)?

DUB:如何指定 git repo 的版本?