> On Dec 19, 2015, at 1:20 PM, Wallacy <walla...@gmail.com> wrote: > > Curiously I was analyzing this part of the library a few minutes ago. > It will probably be necessary to extend "Range": > > extension Range where Element: Strideable { > func by(n: Element.Stride) -> StrideThrough<Element> { > return startIndex.stride(through: endIndex, by: n) > } > }
Why? > The first thing that came into my head was: > > var rangeA = -150.0..<150 // HalfOpenInterval<Double> > var rangeB = -150.0...150 // ClosedInterval<Double> > var rangeC = -150..<150 // Range<Int> > var rangeD = -150...150 // Range<Int> > > For "Range" we need to use startIndex and endIndex respectively, and with > HalfOpenInterval/ClosedInterval only start and end. > > I do not know for you, but it seems inconsistent and redundant to me. I don't understand most of what you're saying here, or why you're saying it. The extensions as shown in Donnacha's post work for me. > > Em sáb, 19 de dez de 2015 às 18:39, Dave Abrahams via swift-dev > <swift-dev@swift.org <mailto:swift-dev@swift.org>> escreveu: >> On Dec 19, 2015, at 11:44 AM, Donnacha Oisín Kidney via swift-dev >> <swift-dev@swift.org <mailto:swift-dev@swift.org>> wrote: >> >> You can define an extension on interval types: >> >> extension HalfOpenInterval where Bound: Strideable { >> func by(n: Bound.Stride) -> StrideTo<Bound> { >> return start.stride(to: end, by: n) >> } >> } >> >> extension ClosedInterval where Bound: Strideable { >> func by(n: Bound.Stride) -> StrideThrough<Bound> { >> return start.stride(through: end, by: n) >> } >> } >> >> Which maybe gives you slightly more elegant usage: >> >> for lat in (CGFloat(-60)...60).by(30) { >> print(lat) >> } >> >> for lat in (CGFloat(-60)..<60).by(30) { >> print(lat) >> } > > This is nice; why don't we put it in the standard library and get rid of the > "stride" methods? > >>> On 19 Dec 2015, at 18:59, Gavin Eadie via swift-dev <swift-dev@swift.org >>> <mailto:swift-dev@swift.org>> wrote: >>> >>> With C-style for loops to be removed from the language to general acclaim >>> (including mine), is the following the best way to perform the required >>> looping: >>> >>> for lat in (CGFloat(-60.0)).stride(through: +60.0, by: 30.0) { >>> path.moveToPoint(CGPointMake(-180.0, lat)) >>> path.lineToPoint(CGPointMake(+180.0, lat)) >>> } >>> >>> for lon in (CGFloat(-150.0)).stride(through: +150.0, by: 30.0) { >>> path.moveToPoint(CGPointMake(lon, +90.0)) >>> path.lineToPoint(CGPointMake(lon, -90.0)) >>> } >>> >>> That seems a slightly cumbersome usage. Is there a better way to >>> initialize the SequenceType I want to iterate over? >>> >>> _______________________________________________ >>> swift-dev mailing list >>> swift-dev@swift.org <mailto:swift-dev@swift.org> >>> https://lists.swift.org/mailman/listinfo/swift-dev >>> <https://lists.swift.org/mailman/listinfo/swift-dev> >> >> _______________________________________________ >> swift-dev mailing list >> swift-dev@swift.org <mailto:swift-dev@swift.org> >> https://lists.swift.org/mailman/listinfo/swift-dev >> <https://lists.swift.org/mailman/listinfo/swift-dev> > -Dave > > > > > _______________________________________________ > swift-dev mailing list > swift-dev@swift.org <mailto:swift-dev@swift.org> > https://lists.swift.org/mailman/listinfo/swift-dev > <https://lists.swift.org/mailman/listinfo/swift-dev> -Dave
_______________________________________________ swift-dev mailing list swift-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-dev