我刚刚了解了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?
最佳答案
是后者(迭代所有元素,仅执行主体 满足条件的元素)。
for 语句采用任意序列,而不仅仅是数组。 首先过滤序列不仅效率低下(内存和 时间方面),但对于产生“无限多个”值的序列也是不可能的,如本例所示:
for x in 1... where x % 3 == 0 {
print(x)
if x > 10 { break }
}
这里1...
是一个“部分范围”,表示所有大于的整数
或等于一。
关于Swift Forin-在哪里执行过滤或跳过(继续)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51022520/