有没有一种方法,使for .. in
环形折返引用到集合的条目,而不是副本?斯威夫特在 - 让条目作为参考
说我有一个数组CGPoint
对象points
和我要循环它们和每个点传递给一个函数adjustPoint
,可以使用inout
参数修改的点。
现在执行以下操作不起作用,因为for .. in
环路返回点作为不可改变/可变(取决于我是否或不使用var
)复制数组中的实际点的:
for var point in points {
adjustPoint(point: &point) // This function only changes the copy
}
目前,我认为要做到这一点的唯一方法是环比指数:
for i in 0..<points.count {
adjustPoint(point: &points[i])
}
这真的是唯一的办法或者是也可以用for .. in
循环?
注:我读过这个问题,这是前一段时间(1斯威夫特我相信),所以我想,也许他们已经在此期间改变的东西:turn for in loops local variables into mutable variables
也许你可以尝试将它们包装在一个班级中。 – dasdom
为什么不使用地图?您将创建副本,但是'points = points.map {adjustPoint(point:$ 0)}'将会执行此操作。 – jjatie
是的,我想功能方法是下一个最好的选择,并保持干净的东西,但我仍然不喜欢这样的事实,即斯威夫特使它很烦人,正确地使用引用,相反,你有所有这些“一次性 - 使用一次性“可变副本躺在无处不在。这可能只是个人偏好,但... – Keiwan