我旁边继承:协议的斯威夫特数组类型的对象
protocol P {
var a : Int { get set }
}
class C : P {
var a : Int
...
}
然后我想创建广义阵列,并通过它与一些动作重复:
class Main {
var array : Array<Proto>
var inst : Proto
...
func foo() {
array.append(C(a:10))
for obj in array {
obj.a = 20 //Error: Cannot assign to the result of this expression
}
inst = C(a:10)
inst.a = 20 //Works correctly
for var i = 0; i < arr.count; ++i {
inst = arr[i]
inst.a = 20 //No problem even here
}
}
}
如果我投:(OBJ作为C).a = 20 - 那么一切都很好。 有人可以解释这种行为吗?
这不是一个好的答案。最好确保我们有一个班级类型。这个甚至不会崩溃。 – Sulthan