Thank for explanation. I supposed that the enum constant is fixed and that it is also true for AA.
I will convert my code before I forget. :-).
Dňa 18. 2. 2013 18:22 Ali Çehreli  wrote / napísal(a):
On 02/18/2013 08:59 AM, Lubos Pintes wrote:
 > Yesterday I solved similar problem by using enum.
 > enum GameInfo[string] games=[
 > ...
 > ];

Be careful with that though: 'games' is a literal associative array,
meaning that it will be used in the program as if it's copy-pasted in
that location. It looks like there is a single associative array, but
there is a new temporary created every time you use 'games':

struct GameInfo
{
     int i;
}

enum GameInfo[string] games = [ "one" : GameInfo(1) ];

void main()
{
     assert(&(games["one"]) != &(games["one"]));    // note: !=
}

As the two games are different, their elements are not at the same
location.

This is one way to go:

struct GameInfo
{
     int i;
}

static immutable GameInfo[string] games;

static this()
{
     games = [ "one" : GameInfo(1) ];
}

void main()
{
     assert(&(games["one"]) == &(games["one"]));    // note ==
}

This time there is just one 'games'.

Ali


Reply via email to