(St)Range behavior

John Colvin john.loughran.colvin at gmail.com
Fri Oct 25 09:17:22 PDT 2013


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.


More information about the Digitalmars-d mailing list