我有一个必须属于Any
类型的成员:
var type: MyValueType
var value: Any!
价值的一种可能类型是Array< Int >
如何添加存储在值中的数组?
我尝试过施法,但是施法的结果被认为是不变的。
使用此:
if var arr = (value as! Array<Int>) { ... }
不起作用,因为arr是数组的副本,而不是数组本身。
我当然可以再次将arr
分配给value
,但这不会造成不必要的复制吗?
答案 0 :(得分:2)
您可以选择将数组绑定到临时变量,进行变异并将临时变量分配回来,例如
var value : Any!
value = [1, 2, 3]
if var intArray = value as? [Int] {
intArray.append(4)
value = intArray
}
在这种情况下,不必要的复制是必要的。
替代方案可以是基于协议的解决方案。一切都比Any
好。