在D中打印枚举字符串值(而不是键)

时间:2015-03-16 16:43:20

标签: d

我打印" F"不是"华氏温度"在这段代码中。如何打印枚举值而不是键?

import std.stdio;

void main()
{
    enum TemperatureUnit : string { C = "Celsius", F = "Fahrenheit" }
    writefln("%s", TemperatureUnit.F);
}

1 个答案:

答案 0 :(得分:1)

只需将其转换为字符串:

writefln("%s", cast(string) TemperatureUnit.F);

请注意,在将其分配给字符串时,不需要此强制转换:

string s = TemperatureUnit.F; // just works

它只在这里发挥作用,因为std.stdio.write*函数族以及std.conv.to查看传递给它的确切类型并尝试专注于它。如果是enum Color { red, green, blue },则打印出名称很有用。但是,当值是可打印字符串时,该行为也没那么有用。 Casting告诉您希望它被处理的函数,如普通字符串而不是枚举。