我打印" F"不是"华氏温度"在这段代码中。如何打印枚举值而不是键?
import std.stdio;
void main()
{
enum TemperatureUnit : string { C = "Celsius", F = "Fahrenheit" }
writefln("%s", TemperatureUnit.F);
}
答案 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告诉您希望它被处理的函数,如普通字符串而不是枚举。