[swift-dev] C-style For Loops
Brent Royal-Gordon
brent at architechies.com
Sat Dec 19 17:26:31 CST 2015
> I personally liked the original free-function syntax—"stride(from: -50, to: 50, by: 9)". When we got protocol extensions, we decided we'd prefer methods everywhere except in a few special cases, and this clearly falls outside those criteria.
I don't know about that—in `stride(from: -50, to: 50, by: 9)`, I don't see any particular reason to privilege the `from` over the `to`. I mean, I suppose `from` always starts the seqeunce whereas `to` doesn't always appear in it, but they still feel like peers which equally define the operation as a whole. This has definitely always bothered me about Swift 2.
Incidentally, I just thought of another issue with using negative values with normal intervals to walk backwards: What does `(10..<20).by(-2)` mean? A naive implementation would probably give you this:
[20, 18, 16, 14, 12, 10]
It *should* mean this, which would not be useful terribly often:
[18, 16, 14, 12, 10]
Meanwhile, you really want to be able to get this, but the types and operators for an open-start interval don't currently exist:
[20, 18, 16, 14, 12]
I wonder if intervals might need another look, and maybe a redesign to make them more general.
--
Brent Royal-Gordon
Architechies
More information about the swift-dev
mailing list