Jay Norwood:
struct Suit {string nm; int val; int val2; string shortNm;};
You have missed my suggestions above regarding the struct :-)
Look at this:
void main() {
int x;
struct Foo1 {
int bar1() { return x; }
}
pragma(msg, Foo1.sizeof);
static struct Foo2 {
// this gives an error
int bar2() { return x; }
}
pragma(msg, Foo2.sizeof);
}
bar2() gives an error because it can't access x. If you comment
out the bar2 line, the output is:
4u
1u
Usually you don't want your struct defined inside a function to
contain a pointer to the enclosing function.
static Suit[5] suits = [
{"spades",1,6,"spd"},
{"hearts",4,10,"hrt"},
{"hearts2",4,10,"hrt2"},
{"diamonds",10,16,"dmd"},
{"clubs",11,17,"clb"}
];
Unless you have to mutate the contents of a variable, like your
suits, define it const or immutable:
static immutable Suit[5] suits = [
{"spades",1,6,"spd"},
...
];
Generally in D add const/immutable to all variables that you
don't need to mutate, if/where you can.
Bye,
bearophile