nip*_*ese 10 arrays for-loop swift
完全透露,这是一个家庭作业问题:
它应该有[Circle]类型的私有属性.一系列圆圈.该方法应删除半径大于最小要求且小于最大要求的任何圆.
很明显,我应该使用removeAtIndex()删除不符合循环中确定的条件的数组项.然而,许多人已经指出在循环中删除项目的危险因为我猜是"迭代器/索引不匹配".
最终我最终创建了一个空数组并使用.append()将符合"良好"条件的值推送到filteredCircles数组,但我不禁感到这不符合赋值的标准.
有没有一个解决方案实际上从循环中删除数组中的项目?
Luc*_*tti 12
如果FOR LOOP是没有强制性的(我没有看到在引用文本此要求),你应该使用的filter方法.
当您filter在一个数组上调用时,您将获得一个新数组,该数组仅包含与您传递给的闭包有关的值filter.原始数组未发生变异.
struct Circle {
let radius: Double
}
let circles = [Circle(radius: 1), Circle(radius: 5.1), Circle(radius: 4), Circle(radius: 10.8)]
let bigCircles = circles.filter { $0.radius > 5 }
Run Code Online (Sandbox Code Playgroud)
circles是常量,因此您没有与多线程编程相关的问题.如果circles是可变的,那么其他线程可能会在您使用非常可怕的副作用进行循环时更改它.这些是编写函数式编程代码的一些好处.
| 归档时间: |
|
| 查看次数: |
4391 次 |
| 最近记录: |