作为记录在两个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