Swift Forin-where perform filter or skip (continue)?

Swift Forin-where perform filter or skip (continue)?

刚刚了解了Swift的forin-where,但是好像很缺乏文档。所以我心里有一个疑问:它是先过滤再循环还是带条件循环?给定以下代码

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

机器是这样的吗:

for i in arr.filter { [=12=] > 3 }

还是这样?

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

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

是后者(遍历所有元素,只执行body 满足条件的元素)。

for 语句采用任意 序列, 不仅是数组。 首先过滤序列不仅效率低下(内存和 时间方面),但对于产生“无限多个”值的序列来说也是不可能的,就像在这个例子中:

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

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