Swift didSet获取数组的索引

Dan*_*iel 2 swift swift3

假设我有一个数组:

var intArray: [Int] = [1,2,3,4,5] {
    didSet{
        //print index of value that was modified
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我这样做intArray[2] = 10,我可以在里面写什么didSet来打印修改值的索引(在这种情况下为2)?

Ala*_* T. 5

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]
Run Code Online (Sandbox Code Playgroud)

它也适用于单个元素更改,但数组会受到多个更改,因此更安全地获取更改的索引数组.