2016-07-07 41 views
1

我讀一臺iBook約2.2雨燕,並在示例代碼,有這樣的功能:的iOS斯威夫特:有助於理解這個for循環功能

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

>它循環2次 - 它意味着什麼?你如何計算? –

+0

我在遊樂場試過,在右側看到(2次) – Lapinou

+2

哦,不......我的遊樂場向我展示了我的「if」語句是多少次真實的......我在我的循環中放置了一個打印(「」),給我看8次...我現在明白了...對不起這個愚蠢的問題:/ – Lapinou

回答

3

功能的前兩行已經閱讀的第一要素:

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

所以,沒有必要再進行檢查。 array[1..<array.count]返回數組的所有元素,但第一個除外(注意範圍從1開始,而不是0)。

+0

哦,我的好!是的^^我明白了。但我不明白怎麼才能在2個循環中找到最小/最大值。 – Lapinou

+4

可能值得指出的是,您可以使用'array.dropFirst()'作爲'array [1 .. dfri

+0

不錯!謝謝你的提示! :) – Lapinou

2

循環不應該以第一個數組元素開始,因爲該第一個元素是當前的最小/最大引用。

這就是爲什麼循環從第二個索引元素(1[1..<array.count])開始。

array[1..<array.count]是從第二個元素到最後一個數組的一部分。