2014-10-31 76 views
4

我有以下d程序:枚舉不打印預期值

import std.stdio; 

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

void main() 
{ 
    writeln(XYZ.A); 
    writeln(XYZ.B); 
    writeln(XYZ.C); 
} 

即打印:

Ç

我希望它能打印hellofoobar。爲什麼程序打印名稱的常量而不是的值爲?那麼如何打印字符串值呢?

編譯器是DMD v2.063.2

回答

7

爲什麼程序打印常量而不是其值的名稱?

作爲一般規則,writeln和其他函數打印枚舉值的名稱,因爲例如,數字類型的名稱傳達的信息比數字更多。

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

只要將它轉換爲字符串:

cast(string)XYZ.A