2014-10-31 5 views
4

У меня есть следующие D программы:Enum строк не печатает ожидаемого значения

import std.stdio; 

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

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

, который печатает:

В

C

Я ожидаю, что он напечатает hello, foo и bar. Почему программа печатает имя константы вместо ее значение? И как напечатать значение строки тогда?

Компилятор DMD v2.063.2

ответ

7

Почему программа печати имя константы вместо его значения?

Как правило, writeln и другие функции печатают имена значений перечисления, так как, например, числовые типы, имя передает больше информации, чем число.

И как напечатать значение строки тогда?

Просто бросить его в строку:

cast(string)XYZ.A 

 Смежные вопросы

  • Нет связанных вопросов^_^