what is special about unittest constants

Lubos Pintes lubos.pintes at gmail.com
Mon Feb 18 09:31:32 PST 2013


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
>



More information about the Digitalmars-d-learn mailing list