Static Associative Array

spir denis.spir at gmail.com
Sun Mar 6 20:28:04 PST 2011


On 03/07/2011 03:22 AM, Peter Lundgren wrote:
> == Quote from Jonathan M Davis (jmdavisProg at gmx.com)'s article
>> On Sunday 06 March 2011 14:05:04 Peter Lundgren wrote:
>>> Can you define an associative array in a way that can be evaluated at
>>> compile time like you can with non-associative arrays?
>> I'm pretty sure not. I think that it's currently suffering the same fate as stuff
>> like classes and is not yet able to be CTFEed. Some day...
>> - Jonathan M Davis
>
> If not, then what is the D way to initialize a static field of a struct or class a
> la Java's static initializer blocks? I don't mind constructing the associative
> array at run-time if I have to, but I can't afford to do it more than the once needed.

Use the module's <static this () {...}> clause:

int[string] aa;
static this () { aa = ["a":1, "b":2, "c":3]; }

unittest {
     foreach (k,v ; aa)
         writefln("%s --> %s", k,v);
}

Note: you can have as many such ckauses as you like.

Denis
-- 
_________________
vita es estrany
spir.wikidot.com



More information about the Digitalmars-d-learn mailing list