Thread overview
Explicit ordering with std.format
Dec 04, 2009
Tomek Sowiński
Dec 05, 2009
bearophile
Dec 05, 2009
Ary Borenszweig
Dec 06, 2009
Joel Christensen
December 04, 2009
An extract from java.util.Formatter docs:

// Explicit argument indices may be used to re-order output.
formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")
// -> " d  c  b  a"

How do I achieve this with std.format? The ddocs only say that "variadic arguments are consumed in order". Any way to change that order?


Tomek
December 05, 2009
Tomek Sowiñski:
> How do I achieve this with std.format?

I think you can't (and I haven't had the need to do it).

Bye,
bearophile
December 05, 2009
bearophile wrote:
> Tomek Sowiñski:
>> How do I achieve this with std.format?
> 
> I think you can't (and I haven't had the need to do it).

It's somtimes needed with I18N code.
December 06, 2009
Tomek Sowiński wrote:
> An extract from java.util.Formatter docs:
> 
> // Explicit argument indices may be used to re-order output.
> formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")
> // -> " d  c  b  a"
> 
> How do I achieve this with std.format? The ddocs only say that "variadic arguments are consumed in order". Any way to change that order?
> 
> 
> Tomek

With the D Tango library you can put:
Stdout.format("{3} {2} {1} {0}", "a", "b", "c", "d");