Swift Forin-在哪里执行过滤器或跳过(继续)?

时间:2018-06-25 11:34:24

标签: swift performance loops for-loop conditional

我只是对Swift的forin-where有所了解,但似乎非常缺乏文档。因此,我想到一个问题:它执行过滤器然后循环还是仅在条件循环下执行?给出以下代码

var arr = [1, 2, 3, 4, 5]
for i in arr where i > 3 {
    print(i)
}

机器是否这样做:

for i in arr.filter { $0 > 3 }

还是这样?

for i in arr {
    guard i > 3 else { continue } 
    print(i)
}

我应该使用forin-where还是先过滤然后再使用foreach?

1 个答案:

答案 0 :(得分:3)

是后者(迭代所有元素,仅对 满足条件的元素。

for语句不仅可以使用数组,而且可以使用任意的序列。 首先过滤序列不仅效率低下(内存和 时间),但对于产生“无限多个”值的序列也是不可能的,例如本例:

for x in 1... where x % 3 == 0 {
    print(x)
    if x > 10 { break }
}

这里1...是一个“部分范围”,代表所有大于 或等于一个。