On Friday, 21 January 2022 at 02:30:35 UTC, Ali Çehreli wrote:

The bigger question is, why did 'formattedRecords' exist at all? You could have written the output directly to the file.

Oh. this was intentional, as I wanted to write once, and only once, to the file.

The consequence of that decision of course, is the extra memory allocations...

But in my example code I only create 10 records. In reality, my dataset will have 100,000's of records, so I don't want to write 100,000s of time to the same file.

But even *worse* and with apologies, ;) here is something crazy that achieves the same thing:

void ProcessRecords
(in int[][int][] recArray, const(string) fname)
{
    import std.algorithm : joiner;
    auto toWrite = recArray.map!(e => e.byPair);
File("rnd_records.txt", "w").writefln!"%(%(%(%s,%(%s,%)%)%)\n%)"(toWrite);
}

I've done lot's of trial and error for the required number of nested %( %) pairs. Phew...

Ali

Yes, that does look worse ;-)

But I'm looking into that code to see if I can salvage something from it ;-)


Reply via email to