foreach

Steven Schveighoffer via Digitalmars-d digitalmars-d at puremagic.com
Thu Jun 12 10:11:12 PDT 2014


On Thu, 12 Jun 2014 11:00:11 -0400, Manu via Digitalmars-d  
<digitalmars-d at puremagic.com> wrote:

> I often find myself wanting to write this:
>   foreach(; 0..n) {}
> In the case that I just want to do something n times and I don't
> actually care about the loop counter, but this doesn't compile.

The compiler has to assign a variable to this somehow so it can increment  
and test. Naming it isn't the worst thing in the world. As others have  
said, pick an uncommon name.

>
> You can do this:
>   for(;;) {}
>
> If 'for' lets you omit any of the loop terms, surely it makes sense
> that foreach would allow you to omit the first term as well?
> I see no need to declare a superfluous loop counter when it is unused.

But that doesn't increment a variable and test it. If you wanted to loop  
for N times, you need a variable. You have to give it a name, it doesn't  
seem worth adding a feature to save that little bit of thinking.

The thing about it is, you don't need to type more than is necessary:

foreach(L1; 0..n) {
    foreach(L2; 0..n) {
    }
}

Doesn't seem that bad to me.

-Steve


More information about the Digitalmars-d mailing list