This is more a theoretical exercise than specific code nitty gritty, but...

Let's say I have some code like this:

class World {

        // Bunch of members and other functions

        void happyDay () {

                if (bCthulhuRises) {

                        debug(logging) {

logger.writeLog(this); // uses the class toString to give a dump of interesting parts of the object
                        }

                        throw new Exception("We're doomed! Run you fools!");

                }

        }

}

I only want to access the logger object when the program is compiled with the -debug option, so I don't want to pass it along to the object constructor or set a member as a reference to it (which is both tedious and pointless if not in -debug mode). The simple solution is to make the Logger class a singleton (can D do singletons? I presume it's possible, but I haven't really looked into it), but is there a means in D that is considered a better way to do this?

Reply via email to