Michael Rynn wrote:
> On the D2 online pages (http://www.digitalmars.com/d/2.0/statement.html#ForeachStatement)there is
> > Foreach over Structs and Classes with Ranges
> > > My question is , is there a working example of foreach ( e ; range )?
> > > Iteration over struct and class objects can be done with ranges, which means the following properties must be defined:
> > > Property Purpose
> .empty returns true if no more elements
> .next move the left edge of the range right one
> .retreat move the right edge of the range left one
> .head return the leftmost element of the range
> .toe return the rightmost element of the range
> > > So I tried this , but foreach did not work, but using the equivalent for loop code did.
Looks like you ran into a piece of hopelessly outdated documentation. The correct names are, in the same order:
empty
popFront
popBack
front
back
Those should work with foreach.
-Lars

Lars T. Kyllingstad wrote:
> Michael Rynn wrote:
>> On the D2 online pages (http://www.digitalmars.com/d/2.0/statement.html#ForeachStatement)there is
>> Foreach over Structs and Classes with Ranges
>>>>>> My question is , is there a working example of foreach ( e ; range )?
>>>>>> Iteration over struct and class objects can be done with ranges, which means the following properties must be defined:
>>>>>> Property Purpose
>> .empty returns true if no more elements
>> .next move the left edge of the range right one
>> .retreat move the right edge of the range left one
>> .head return the leftmost element of the range
>> .toe return the rightmost element of the range
>>>>>> So I tried this , but foreach did not work, but using the equivalent for loop code did.
> > Looks like you ran into a piece of hopelessly outdated documentation. The correct names are, in the same order:
> > empty
> popFront
> popBack
> front
> back
> > Those should work with foreach.
Actually, when I think about it, I think foreach just needs empty, front, and popFront to work. back and popBack are needed for traversing a range in reverse:
foreach (elem; retro(range)) { ... }
-Lars
-Lars

On Sun, 07 Mar 2010 04:29:59 -0500, Walter Bright <newshound1@digitalmars.com> wrote:
> Lars T. Kyllingstad wrote:
>> Looks like you ran into a piece of hopelessly outdated documentation. The correct names are, in the same order:
>> Thanks, I'll fix.
I saw you fixed the table, but the examples are still wrong
-Steve