On Mon, 01 Apr 2013 20:10:44 -0400, bearophile <[email protected]> wrote:

Sometimes you want to print something coming out of a UFCS chain with a formatting string. In this case you can't append the writef/writefln at the end of the chain. The problem is easy to solve with two simple functions like this. Are they worth having in std.stdio?


import std.stdio, std.range, std.algorithm;

void ufcsWritef(T)(T data, string format) {
     writef(format, data);
}

void ufcsWritefln(T)(T data, string format) {
     writefln(format, data);
}

void main() {
     // Problem from:
     // reddit.com/r/dailyprogrammer_ideas/comments/15in89
     immutable txt = ["Line one", "Line 2"];
     foreach (i; 0 .. txt.map!q{ a.length }.reduce!max)
         txt.transversal(i).writeln;

     // Or equivalently:
     txt
     .map!q{ a.length }
     .reduce!max
     .iota
     .map!(i => txt.transversal(i))
     .ufcsWritefln("%(%s\n%)");
}

Good idea.

I propose fwrite. We're reversing the parameters, so I reversed the function name. Well, sort of :)

-Steve

Reply via email to