Lapinou Lapinou - 4 months ago 14
Swift Question

iOS Swift: Help to understand this for loop function

I'm reading an iBook about Swift 2.2, and in a sample code, there is this function:

func minMax(array: [Int]) -> (min: Int, max: Int) {

var currentMin = array[0]
var currentMax = array[0]

for value in array[1..<array.count] {

if value < currentMin {
currentMin = value
}

if value > currentMax {
currentMax = value
}
}

return (currentMin, currentMax)
}

let values = [21, 1, -4, 7, 2, 12, 88, 12021, 456]
let bounds = minMax(values)


I tried this piece of code but I don't understand how the for loop works here:

for value in array[1..<array.count]


Why don't write:
for value in array
instead ?
The only thing I noticed is with:

for value in array[1..<array.count]


it's looping 2 times to find the min and max number.
But using
for value in array
, 9 times of course.

Answer

The first two lines of the function are already reading the first element:

var currentMin = array[0]
var currentMax = array[0]

So, there's no need to check it again. array[1..<array.count] returns all elements of the array except the first (notice that the range starts at 1 instead of 0).