iOS Swift:帮助理解循环函数

时间:2016-07-07 14:12:20

标签: swift for-loop swift2

我正在阅读关于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次。

2 个答案:

答案 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]是数组的一部分,从第二个元素到最后一个元素。