(St)Range behavior

Chris wendlec at tcd.ie
Fri Oct 25 07:02:52 PDT 2013


On Friday, 25 October 2013 at 12:57:51 UTC, Meta wrote:
> On Friday, 25 October 2013 at 11:06:18 UTC, Chris wrote:
>> I have three lazy ranges tied together in a foreach loop like 
>> so:
>>
>> Item[] items; // An array of Item-struct
>>
>> foreach (item; items.range1.range2.range3) {
>>  // ...
>> }
>>
>> The funny thing is that when I run the foreach loop it does 
>> everything in reverse. So I changed it to
>>
>> foreach (item; items.range3.range2.range1) {
>>  // ...
>> }
>>
>> And now it works as expected. I've never had such strange 
>> behavior and have no clue what could have caused it. In all my 
>> other ranges it works from left to right 1. step, 2. step, 3. 
>> step and not from right to left.
>
> Can you post some code?

And it is also circular. range3 sends it to range 1 again I must 
have screwed it up somewhere. Everything is ok, if I do it step 
by step:

foreach (item; items.range1) {}
foreach (item; items.range2) {}
foreach (item; items.range3) {}

Has anyone ever come across a bug like this? Each range works 
fine on its own. When I tie them together, they go upside down 
and in circles. Weird. Maybe I can extract some test code.


More information about the Digitalmars-d mailing list