Singleton Pattern

Jonathan M Davis jmdavisProg at gmx.com
Wed Jan 11 17:04:23 PST 2012


On Thursday, January 12, 2012 00:55:14 Thomas Mader wrote:
> On Friday, January 6, 2012, Jonathan M Davis <jmdavisProg at gmx.com> wrote:
> > The same way that you would in C++ or Java, except that unlike you have
> 
> static
> 
> The most simple and elegant way in java is to use an enum. Is there nothing
> comparable in D?

No, because enums must be known at compile time. This avoids the ordering 
issues that you get in languages like C++ or Java when you directly initialize 
static variables like that. So, to have an enum which is a class, you need to 
be able to construct a class at compile time and have it persist into the 
runtime of the program. And while you _can_ now use classes with CTFE, they 
cannot persist beyond CTFE (though that may be possible eventually). Any class 
which is used at runtime must be constructed at runtime. So, either you need 
to use a static constructor, or you need to initialize the singleton lazily.

- Jonathan M Davis


More information about the Digitalmars-d-learn mailing list