假设我有一个数组:
var intArray: [Int] = [1,2,3,4,5] {
didSet{
//print index of value that was modified
}
}
if I do intArray[2] = 10
,里面可以写什么didSet
为了打印修改值的索引(在本例中为 2)?
zip() 函数对此很有用:
class A
{
var array = [1,2,3,4,5]
{
didSet
{
let changedIndexes = zip(array, oldValue).map{$0 != $1}.enumerated().filter{$1}.map{$0.0}
print("Changed indexes: \(changedIndexes)")
}
}
}
let a = A()
a.array = [1,2,7,7,5]
// prints: Changed indexes: [2, 3]
它也适用于单个元素的更改,但数组可能会发生多次更改,因此获取更改索引的数组更安全。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)