On Sunday 06 March 2011 18:22:52 Peter Lundgren wrote: > == Quote from Jonathan M Davis (jmdavisp...@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.
If you can initialize a field with CTFE, then you can do it directly. Otherwise, you have to do it with a constructor at runtime. If it's a member field of a struct or class, then you use a normal constructor. class C { this() { ... } } If it's a static field of a struct or class, then you use a static constructor in that struct or class. class C { static this() { ... } } If it's a variable at the module level, then you use a module constructor (also labeled with static). static this() { ... } - Jonathan M Davis