我有以下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,foo和bar.为什么程序打印常量的名称而不是其值?那么如何打印字符串值呢?
编译器是DMD v2.063.2
为什么程序打印常量的名称而不是其值?
作为一般规则,writeln和其他函数一起打印枚举值的名称,因为对于例如数字类型,名称传达的信息多于数字.
那么如何打印字符串值呢?
只需将其转换为字符串:
cast(string)XYZ.A
Run Code Online (Sandbox Code Playgroud)