Why does this snippet print the enum identifiers instead of their values?

John Colvin john.loughran.colvin at gmail.com
Tue May 28 05:16:50 PDT 2013


On Tuesday, 28 May 2013 at 11:49:25 UTC, Gary Willoughby wrote:
> Why does the following snippet print:
>
> "Started name revision" instead of "Started my-app 1.0a"?
>
> import std.stdio;
>
> enum application : string
> {
> 	name     = "my-app",
> 	revision = "1.0a",
> }
>
> void main(string[] arguments)
> {
> 	writefln("Started %s %s", application.name, 
> application.revision);
> }

I don't really know what the correct way of doing this is. There 
really ought to be a property .value of enums.

The stringof property will return what you want, although 
annoyingly with quotation marks around it ([1 .. $-1] on the end 
will clear that up of course). For types other than string it 
returns cast(application)value as a string, which is not 
particularly helpful.

BTW this only happens with named enums, anonymous enums print the 
value not the name.


I don't know how much any of this is intended behaviour and how 
much is just by chance.


More information about the Digitalmars-d-learn mailing list