我有以下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
我希望它能打印hello
,foo
和bar
。为什么程序打印常量的名称而不是值?那么如何打印字符串值?
编译器是DMD v2.063.2
答案 0 :(得分:7)
为什么程序会打印常量的名称而不是其值?
作为一般规则,writeln
和其他函数打印枚举值的名称,因为例如数字类型名称传达的信息多于数字。
然后如何打印字符串值?
只需将其转换为字符串:
cast(string)XYZ.A