(St)Range behavior

Chris wendlec at tcd.ie
Sat Oct 26 11:24:41 PDT 2013


On Friday, 25 October 2013 at 16:17:24 UTC, John Colvin wrote:
> On Friday, 25 October 2013 at 14:02:54 UTC, Chris wrote:
>> 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.
>
> How strange. Sorry, without seeing some code I doubt it's 
> possible to understand what's happening.

I'll try to extract some code I can post next week, or if I fix 
it, will let you know what it was.


More information about the Digitalmars-d mailing list