static initialization of associative arrays
Daniel Keep
daniel.keep.lists at gmail.com
Wed Apr 15 07:06:26 PDT 2009
Tyro[a.c.edwards] wrote:
> Is it yet possible to statically initialize an associative array? If so,
> please point me to the documentation. I am using DMD v2.028.
>
> Currently I'm able to do this:
>
> import std.stdio;
>
> string[string] types;
> static this(){
> types = [ "void":"void", "bool":"bool" ];
> }
>
> void main(){
> writeln(types);
> }
>
> Output = [void:void,bool:bool] which is exactly what I want.
>
> However, removing static this() results in an error.
>
> string[string] types = [ "void":"void", "bool":"bool" ];
>
> Result:
> api.d(77): Error: non-constant expression ["void":"void","bool":"bool"]
>
> How do I make the initialization constant?
>
> Thanks,
> Andrew
I think Walter said something a while back to the effect that making it
possible to statically initialise AAs isn't feasible because it requires
setting up a complex structure on the heap. The best you could do would
be to *pretend* to statically initialise them, and actually really
initialise them in a module ctor.
Which is exactly what you currently have to do.
Could be wrong; that's just what I remember from the last time this came up.
-- Daniel
More information about the Digitalmars-d-learn
mailing list