作爲記錄在兩個Array和DictionaryforEach(_:)
實例方法:何時使用forEach(_ :)而不是in?
呼叫以相同的順序 在序列每個元素在給定的封閉件的for-in循環。
然而,改編自Sequence Overview:
序列是,你可以在 時間通過一個步驟值的列表。 用於遍歷序列 的元素的最常用方式是使用for-in循環。
言下之意是由forEach(_:)
或for in
迭代序列:
let closedRange = 1...3
for element in closedRange { print(element) } // 1 2 3
closedRange.forEach { print($0) } // 1 2 3
或(陣列):
let array = [1, 2, 3]
for element in array { print(element) } // 1 2 3
array.forEach { print($0) } // 1 2 3
將給出相同的輸出。
爲什麼forEach(_:)
竟然存在?即使用它代替for in
循環有什麼好處?從性能角度看他們會是一樣的嗎?
作爲一個假設,它可能是一個語法糖,特別是在使用函數式編程時。
從性能的角度來看'forEach'是**米ù] C H **比爲'loop'慢。但是它也可以方便地用作Objective-C的'makeObjectsPerformSelector:' – vadian
@vadian - 在調試版本中它慢得多。在發佈版本中不一定是真的(顯然,取決於代碼中的其他內容)。例如,我只是通過在發佈版本中有數百萬對象的數組進行迭代測試,並且性能差異是難以區分的。 – Rob
@Rob感謝您的反饋。事實上,我的「基準測試」是在調試模式下執行的(只是⌘運行該項目) – vadian