dmd 2.029 release

renoX renosky at free.fr
Mon Apr 27 01:19:00 PDT 2009


Nick Sabalausky a écrit :
> "bearophile" <bearophileHUGS at lycos.com> wrote in message 
> news:gsipn1$1bng$1 at digitalmars.com...
>> Andrei Alexandrescu:
>>> If it were an error, I wouldn't let it go.
>> It's an error. It will lead to troubles.
>>
> 
> Sometimes it is an error, but there are times when it isn't:
[cut]
> Call List In Psuedo-Japanese:
> For Each Person Where Name="Smith": "SmithSan {LoopIndex}'s DenwaBango: 
> {Phone}"
> ---------------------
> 
> So then the report creation code:
> 
> ---------------------
> foreach(int i, Person p; people.subset(customReport.whereClause))
>     writefln(customReport.formatStr, i, p.id, p.first, p.last, p.phone, 
> p.zip);
> ---------------------
> 
> That would be very difficult/limiting if every arg had to be used in the 
> format string.

Mmmh, is {LoopIndex} correct? It should be {i} I think and I would argue 
that this format string should generate an error (something better than 
a runtime exception would be nice but I'm not sure that this is possible).

That said I agree that both are needed, so why not have either two 
different function or a function parameter which change the behaviour of 
the format string interpretation?

By default writefln would complain if there is a possibility of an 
unused parameter, but you could do
writefln(customReport.formatStr, i, p.id, p.first, p.last, p.phone, 
p.zip, allowUnused=true);

> (Incidentally, this example also demonstrates why I consider C#/Tango-style 
> string formatting superior to C/Phobos-style) 

I think that named format string are much superior to positional format 
string as they are easier to read/write..

BR,
renoX


More information about the Digitalmars-d-announce mailing list