现在,Swift是开源的很酷的事情是我们可以自己验证这一点.下面是电流源代码Sequence.filter(注意,已经使用新的名称Sequence和Iterator; SequenceType以及GeneratorType将在斯威夫特3重命名):
/// Returns an `Array` containing the elements of `self`,
/// in order, that satisfy the predicate `includeElement`.
@warn_unused_result
public func filter(
@noescape includeElement: (Iterator.Element) throws -> Bool
) rethrows -> [Iterator.Element] {
var result = ContiguousArray<Iterator.Element>()
var iterator = self.makeIterator()
while let element = iterator.next() {
if try includeElement(element) {
result.append(element)
}
}
return Array(result)
}
Run Code Online (Sandbox Code Playgroud)
它使用while循环而不是for循环,可能是因为之前编写的代码for ... in甚至是一个东西(尽管我还没有验证).但是你可以看到它本质上是一个没有特殊优化的简单循环.
| 归档时间: |
|
| 查看次数: |
514 次 |
| 最近记录: |