我正在阅读关于Swift 2.2的iBook,在示例代码中,有这个函数:
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)
我尝试了这段代码,但我不明白for循环是如何工作的:
for value in array[1..<array.count]
为什么不写:for value in array
而是?
我唯一注意到的是:
for value in array[1..<array.count]
循环2次以找到最小和最大数字。
但是使用for value in array
,当然是9次。
答案 0 :(得分:3)
该函数的前两行已经在读取第一个元素:
var currentMin = array[0]
var currentMax = array[0]
所以,没有必要再检查一下。 array[1..<array.count]
会返回数组的所有元素,但除了第一个(注意范围从1
开始而不是0
)。
答案 1 :(得分:2)
循环不应该以第一个数组元素开头,因为第一个元素是当前的最小/最大引用。
这就是循环从第二个索引元素(1
中的[1..<array.count]
)开始的原因。
array[1..<array.count]
是数组的一部分,从第二个元素到最后一个元素。