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

标签 swift performance loops for-loop conditional-statements

我刚刚了解了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/

相关文章:

ios - 从警报文本字段获取值

ios - 如何使用 Xcode 11 和 swift 从一组用户输入 Ints 中找到 Max

ios - 在 Swift 中动态创建对象

performance - Git 在 Big Commits 与 tiny commits 方面的表现

python - 如何重置多列的索引以匹配两个数据帧?

matlab - 绘制 Matlab 函数的问题

swift - 用于滚动的 UIGesture 识别器?

java - 不重用PreparedStatements 时的性能影响?

php - PHP中具有不同div类的循环图像

c - 逐行填充数组(一维数组)