在 D 中打印枚举字符串值(不是键)
Printing the enum string values (not keys) in D
我在此代码中打印 "F" 而不是 "Fahrenheit"。如何打印枚举值而不是键?
import std.stdio;
void main()
{
enum TemperatureUnit : string { C = "Celsius", F = "Fahrenheit" }
writefln("%s", TemperatureUnit.F);
}
只需将其转换为字符串:
writefln("%s", cast(string) TemperatureUnit.F);
请注意,将其分配给字符串时不需要此转换:
string s = TemperatureUnit.F; // just works
它只在这里发挥作用,因为 std.stdio.write*
系列函数以及 std.conv.to
,查看传递给它的确切类型并尝试专注于它。当它是 enum Color { red, green, blue }
时,打印出名字是有用的。但是当该值也是可打印字符串时,这种行为就不那么有用了。强制转换告诉您希望将其视为普通字符串而不是枚举的函数。
我在此代码中打印 "F" 而不是 "Fahrenheit"。如何打印枚举值而不是键?
import std.stdio;
void main()
{
enum TemperatureUnit : string { C = "Celsius", F = "Fahrenheit" }
writefln("%s", TemperatureUnit.F);
}
只需将其转换为字符串:
writefln("%s", cast(string) TemperatureUnit.F);
请注意,将其分配给字符串时不需要此转换:
string s = TemperatureUnit.F; // just works
它只在这里发挥作用,因为 std.stdio.write*
系列函数以及 std.conv.to
,查看传递给它的确切类型并尝试专注于它。当它是 enum Color { red, green, blue }
时,打印出名字是有用的。但是当该值也是可打印字符串时,这种行为就不那么有用了。强制转换告诉您希望将其视为普通字符串而不是枚举的函数。