digitalmars.D.learn - A small function wrapping writeln and writefln
- Andrej Mitrovic (32/32) Mar 23 2011 This is just something I was experimenting with:
This is just something I was experimenting with:
import std.stdio;
import std.algorithm;
void echo(T...)(T args)
{
static if (!T.length)
{
writeln();
}
else
{
static if (is(T[0] : string))
{
if (canFind(args[0], "%"))
{
writefln(args);
return;
}
}
// not a string, or not a formatted string
writeln(args);
}
}
void main()
{
echo("Formatted %s string %s", 1, 2);
echo("Not a formatted string", 1, 2);
echo([1, 2, 3]);
}
For a while I've had an issue where I've used `if (is(T[0] : string))`and the
compiler complained about instantiating writefln() with an int[] as the first
argument. Then I remembered I had to use a static if for compile-time checks
(doh!). :)
Of course, the function comes with a cost of a runtime check. But its pretty
cool D can do this sort of stuff.
Mar 23 2011








Andrej Mitrovic <none none.none>