On Thursday, 10 December 2015 at 14:24:43 UTC, Shriramana Sharma wrote:
Hello. I'm using DMD 2.069.2. As per http://ddili.org/ders/d.en/enum.html the following code is supposed to output the *names* of the suits:

import std.stdio;
void main()
{
    enum Suit { spades, hearts, diamonds, clubs }
foreach (suit; Suit.min .. Suit.max + 1) { writefln("%s", suit); }
}

But I'm getting 0 1 2 3. Kindly advise.

You should rather use std.traits.EnumMembers to iterate the members of an enum:

~~~~~~~~~~~~
import std.stdio;

void main(string[] args)
{
    import std.traits: EnumMembers;
    enum Suit { spades, hearts, diamonds, clubs }
    foreach(member; EnumMembers!Suit)
        writeln(member);
}
~~~~~~~~~~~~

it can also counts

~~~~~~~~~~~~
import std.stdio;

void main(string[] args)
{
    import std.traits: EnumMembers;
    enum Suit { spades = 23.2, hearts, diamonds, clubs }
    foreach(i,member; EnumMembers!Suit)
    {
        writeln(member);
        writeln(i);
    }
}
~~~~~~~~~~~~

which is interesting to get the rank of a member, considering that the rank is not always the same as the value (like here, it's a float ;) ).

Reply via email to