Feature request: extending comma operator's functionality

Jonathan M Davis jmdavisProg at gmx.com
Thu Oct 4 17:16:00 PDT 2012


On Friday, October 05, 2012 02:08:14 bearophile wrote:
> Tommi:
> > Maybe we forget about commas then, and extend if-clauses so
> > that you can properly define variables at the beginning of it.
> > Separated by semicolons.
> 
> Regarding definition of variables in D language constructs, there
> is one situation where sometimes I find D not handy. This code
> can't work:
> 
> do {
> const x = ...;
> } while (predicate(x));
> 
> 
> You need to use:
> 
> T x;
> do {
> x = ...;
> } while (predicate(x));

Yeah. That comes from C/C++ (and is the same in Java and C#, I believe). I 
don't know why it works that way. It's definitely annoying.

Of course, changing it at this point would change the semantics in a 
potentially code-breaking manner in that if the condition relies on any 
variables local to the loop having been destroyed, then its behavior will 
change. That's probably an insanely uncommon situation though - enough so that 
I'd be all for changing the semantics to have the scope exited _after_ the 
test is done (assuming that there's not a solid technical reason to keep it 
as-is). But I have no idea how possible it is to talk Walter into that sort of 
change.

- Jonathan M Davis


More information about the Digitalmars-d mailing list