On Sunday 06 March 2011 18:22:52 Peter Lundgren wrote:
> == Quote from Jonathan M Davis ([email protected])'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