What do you use opDispatch for?

Mike Parker aldacron at gmail.com
Mon Mar 22 22:59:54 PDT 2010


Philippe Sigaud wrote:
> 
> 
> As for you, what are your experiences / projects with opDispatch?
> 
> Philippe

I was toying around with the idea of using it for a quick & dirty logger 
and came up with this:

**************************
import std.stdio;
import std.string;

struct Log
{
	File file;
		
	this(string filename)
	{
		file.open(filename, "w");
	}
	
	void opDispatch(string s, string f = __FILE__, uint line = __LINE__, 
S...)(S args)
	{		
		file.writeln("[", f, " @ ", line, "][", toupper(s), "]", args);		
	}
}
**************************

And then use it like this:

log.error("This is an error.");
log.info("Wouldn't you like to know something?");
debug log.trace("Hey, this is happening now.");
version(AudioStats) log.audio("Some stats: ", foo, bar);


To me, this is much cleaner than the alternative, which would be 
something like:

log.write("ERROR", "This is an error");


More information about the Digitalmars-d-learn mailing list