Feature request: extending comma operator's functionality

monarch_dodra monarchdodra at gmail.com
Fri Oct 5 06:35:10 PDT 2012


On Friday, 5 October 2012 at 00:22:04 UTC, Jonathan M Davis wrote:
> On Friday, October 05, 2012 02:08:14 bearophile wrote:
>> [SNIP]
>> 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.
> 
> [SNIP]
>
> - Jonathan M Davis

Because it's the only way to guarantee that x exits when you 
reach the end of the loop.

do {
   if(true) continue; //Yawn... skip.
   const x = ... ;
} while (predicate(x)); //What's x?

Basic goto limitations. Unlike goto though, inserting a 
"continue" should never create a compile error, so the compiler 
*has* to guarantee that the if condition references nothing 
inside its own block.

It is annoying, but nothing that can't be fixed with a scope bloc.


More information about the Digitalmars-d mailing list