[swift-evolution] Feature proposal: Range operator with step
Hans Huck
gutgedacht at gmx.de
Thu Apr 14 18:55:15 CDT 2016
Dave Abrahams via swift-evolution <swift-evolution at ...> writes:
>
>
> on Thu Apr 14 2016, Hans Huck <swift-evolution <at> swift.org> wrote:
>
> > Dave Abrahams via swift-evolution <swift-evolution <at> ...> writes:
> >
> >>
> >> If I thought extreme concision was important for this application, I'd be
> >> proposing something like
> >>
> >> for x in 0.0..<20.0//1.3 {}
> >>
> >> but personally, I don't,
> >>
> > And that is why exactly? The For-loop is at the very core of the language
> > and one of its most frequently used structures. Any unnecessary noise should
> > be avoided here.
> >
> >> which is why I propose `.striding(by: x)`
> >> rather than simply `.by(x)`, the latter being more open to
> >> misinterpretation.
> >>
> > Please elaborate. How could
> >
> > for i in (1...10).by(3)
> >
> > possibly be misinterpreted?
>
> (p1..<p2).by(lineCount)
>
> Doesn't exactly tell me what role lineCount is playing or what "by"
> does. Maybe it means give me the range sorted by line count. In this
> case a little more verbosity can be the difference between
> understandable and unmistakable.
>
I find that unlikely, unless one is completely new to the language, but I
see your point -- for ranges in general.
It is impossible though to misinterprete it in the context of a For-loop, so
to keep the latter concise and the former unmistakable, what do you think of
for i in p1..<p2 by x
as syntactic sugar for and internally mapped to
for i in (p1..<p2).striding(by: x)
Best of both worlds?
-- Hans
More information about the swift-evolution
mailing list