<div dir="ltr">We've had this discussion on a few occasions. Unfortunately, copying links at the moment is a little tough, but I hope to do so at a later time (or others can jump in here).<div><br></div><div>The gist of the previous discussion centered on a few objections:</div><div><div>* that stride(by:), or rather striding(by:), was too verbose</div><div>* that both stride(from:to:by:) and Range.striding(by:) should not co-exist, so one would have to be removed in favor of the other</div><div>* that there was no one obvious behavior with a negative stride size (range operators require a smaller number on the lhs and a bigger one on the rhs, so you can't write `9...0`, but stride(from:to:by) can start from a bigger number to a smaller one, so there is a difference here that went through a lot of bikeshedding; there were several important people that made it clear that Range would not be modified for this use case, so it's stride semantics that must change)</div><div>* that for floating point ranges, removing stride(from:to:by:) in favor of striding(by:) would eliminate the possibility of expressing certain strides with open lower bound and negative stride size, partially motivating new range operators that are a whole nother issue</div><div class="gmail_extra"><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 20, 2016 at 4:19 PM, Tim Vermeulen via swift-evolution <span dir="ltr"><<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">If ClosedRange (Range in Swift 2.2.1) has a stride(by:) method, we can change<br>
<br>
stride(from: 0, to: 10, by: 3)<br>
<br>
to<br>
<br>
(0..<10).stride(by: 3)<br>
<br>
and similarly, we can change<br>
<br>
stride(from: 0, through: 10, by: 3)<br>
<br>
to<br>
<br>
(0…10).stride(by: 3)<br>
<br>
As we can see, this syntax can replace both stride(from:to:by:) and stride(from:through:by:), and in my opinion it is more in line with the rest of Swift 3, similar to how Range.init(start:end:) will be deprecated in Swift 3 in favor of the … and ..< operators.<br>
<br>
I’m not sure if this proposed stride(by:) method could replace all uses of stride(from:to:by:) and stride(from:through:by:), but I think that at the very least it would be a nice addition to the standard library.<br>
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</blockquote></div><br></div></div></div>