In Swift 3.0, the c-style for statement is deprecated. A bold step to remove a structure that most of us are familiar with to make the language more robust, and to continue the ongoing quest to banish the semi-colon from the lands of Swift forever. (I don’t know what the semi-colon did to Apple, but it was obviously pretty serious stuff)
for var i=0;i<10;i++ {
print(i)
}
The basic for loop is straight-forward enough to replace. Using a for-in loop with a range the above will be:
for i in 0..<10 {
print(i)
}
But what of the more complicated c-style for loops? What if we wanted to count down from 10 to 0?
for var i = 10; i >= 0; i-- {
print(i)
}
In this case we could apply a `reverse()` method to the range.
for i in (0...10).reverse() {
print(i)
}
But what if we wanted to count down to >0 rather than >=0? This range only permits a >. We could of course add one to the left side to make it >=1, but if we want to maintain it as is, there is another option: the stride() method. Using the stride() method the above could be written:
for i in 10.stride(to: 0, by: -1) {
print(i)
}
The stride() method permits us the same sort of complexity in our for loops that the c-style for loop gave us. For example, what if we wanted to go up by 2’s?
for var i=0;i<10;i+=2 {
print(i)
}
Again we could use stride().
for i in 0.stride(to: 10, by: 2) {
print(i)
}
So, c-style for statements are dead, long live the stride() method!
Leave a comment