[swift-evolution] Feature proposal: Range operator with step

Stephen Canon scanon at apple.com
Wed Apr 6 13:06:30 CDT 2016


> On Apr 6, 2016, at 10:10 AM, Dave Abrahams via swift-evolution <swift-evolution at swift.org> wrote:
> 
> 
> on Wed Apr 06 2016, Brent Royal-Gordon <brent-AT-architechies.com> wrote:
> 
>>> For example, there are all kinds of other ways to slice this:
>>> 
>>>   stride(over: 0..<200, by: -2)
>> 
>> This seems like a particularly good solution. The way I understand it
>> at least, it would allow ranges to always be ordered, with the only
>> difference being whether it went start-to-end or end-to-start,
>> determined by the stride's sign.
> 
> This is no different in principle from
> 
>     (0..<200).striding(by: -2)
> 
> Again, I wasn't trying to suggest any of the solutions listed there.
> The point I was making was that we don't have enough information to
> design more than
> 
>    (0..<200).striding(by: -2)

Of the suggestions I’ve seen floated, this is my favorite by a huge margin.

- It preserves the ordering of range endpoints.
- It supports the right kind of half-open intervals—[a,b)—for zero-based indexing.
- It avoids making reverse iteration significantly more complex.

– Steve


More information about the swift-evolution mailing list