Jay Norwood:

If that is so, then the C initialization of an array with an unnamed struct type, like this, would require a struct type name.

static struct { int i; long lv;} suits[3] = {{1, 2L},{2, 4L},{3,9L}};

Giving a struct a name is often a good idea. But if you don't want to name it, then you can use a Phobos Tuple. You can even omit its field names if you want.


        struct Suit {string nm; int val; int val2; string shortNm;};

Better:

static struct Suit {string nm; int val; int val2; string shortNm;}

Generally inside functions it's better to define static struct. And struct definitions don't need a trailing semicolon.


    foreach (member;  suits)

Generally it's better to attach an 'immutable' there, this is not always possible, but it's a good habit:

      foreach (immutable member;  suits)


I also tried using writefln(tup) and writeln(tup) in the example above. The output from writeln(tup) looks like it is headed in the right direction. Maybe a writecsv(tup) would be useful.

Try:

member.writeln;

Bye,
bearophile

Reply via email to