我在 Swift 3.0 中有一些这样的代码,用于尝试更新元素数组中的属性......
for point in listOfPoints {
var pointInFrame : Float = Float(point.position.x * sensorIncomingViewPortSize.width) + Float(point.position.y)
point.status = getUpdateStatus( pointInFrame )
}
但是我得到一个编译错误:"无法分配给属性:"点"是"let"常量"[对于第 3 行]
无论如何,是否有任何方法可以使迭代器(点(在 Swift 中可变,例如如何将"inout"用于函数参数?
还是您应该以另一种方式完成此任务?
提前谢谢。
斯坦
只需将其更改为var
,而不是let
声明point
即可。 let
是一个constant
.
实现此目的的另一种方法:
for i in 0 ... myStructArray.count - 1 {
var st = myStructArray[i]
st.someStringVariable = "xxx" // do whatever you need with the struct
st.someIntVariable = 123 // do more stuff
// last step (important!):
myStructArray[i] = st // necessary because structs are VALUE types, not reference types.
}
如果只需要进行一项更改,则可以省略将局部变量(示例中st
(定义为数组元素的步骤,然后将数组元素设置为等于局部变量的步骤。 但是,如果您要对元素进行大量更改,如果可能更简洁地制作局部变量,请对其进行所有更改,然后将该变量分配回数组元素。
如果数组是类而不是结构,则不需要赋回的最后一步(引用类型 - 类,vs 值类型 - 结构(。