On Sunday, 2 July 2017 at 00:49:30 UTC, LeqxLeqx wrote:
Hello!

How does one go about invoking a templated-variatic function such as std.string.format
with an array of objects?

For example:

string stringMyThing (string formatForMyThings, MyThing[] myThings)
{
  return format(
    formatForMyThings,
    myThings
    );
}



In executing the above, the 'format' method always interprets the entire array 'myThings' as the first argument to the format, and no arguments afterwards, resulting in 'orphaned' format specifiers if the array is longer than a single element. Even if the array is only a single element, the formatter will wrap the result of the element's 'toString()' method with '[' and ']'

I really don't want to write my own format parser.
Any help would be much appreciated!


Thanks!

string stringMyThing (string fmt, MyThing[]  myThings)
{
    Appender!(string) s;
    foreach(thing; myThings);
        s.append(format(fmt,thing));
    return s.data();
 }

sorry I can't remember the appender api properly.

Reply via email to