字符串枚举不打印预期值

gla*_*ert 4 d dmd

我有以下D程序:

import std.stdio;

enum XYZ : string
{
    A = "hello",
    B = "foo",
    C = "bar"
}

void main()
{
    writeln(XYZ.A);
    writeln(XYZ.B);
    writeln(XYZ.C);
}
Run Code Online (Sandbox Code Playgroud)

打印:

一个

C

我希望它打印hello,foobar.为什么程序打印常量的名称而不是其?那么如何打印字符串值呢?

编译器是DMD v2.063.2

Vla*_*eev 7

为什么程序打印常量的名称而不是其值?

作为一般规则,writeln和其他函数一起打印枚举值的名称,因为对于例如数字类型,名称传达的信息多于数字.

那么如何打印字符串值呢?

只需将其转换为字符串:

cast(string)XYZ.A
Run Code Online (Sandbox Code Playgroud)