字符串枚举不打印预期值

时间:2014-10-31 14:08:53

标签: 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);
}

打印:

  

A

     

     

C

我希望它能打印hellofoobar。为什么程序打印常量的名称而不是?那么如何打印字符串值?

编译器是DMD v2.063.2

1 个答案:

答案 0 :(得分:7)

  

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

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

  

然后如何打印字符串值?

只需将其转换为字符串:

cast(string)XYZ.A