我只是对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?
答案 0 :(得分:3)
是后者(迭代所有元素,仅对 满足条件的元素。
for语句不仅可以使用数组,而且可以使用任意的序列。 首先过滤序列不仅效率低下(内存和 时间),但对于产生“无限多个”值的序列也是不可能的,例如本例:
for x in 1... where x % 3 == 0 {
print(x)
if x > 10 { break }
}
这里1...
是一个“部分范围”,代表所有大于
或等于一个。