在 Swift 中,集合默认是按值传递的,我们可以inout
让它在函数参数中通过引用传递,但是我们如何在闭包捕获变量中做到这一点?
var list = [1, 2, 3]
func edit(inout list: [Int]) {
list.append(4)
dispatch_async(dispatch_get_main_queue()) {
list.append(5)
}
}
edit(&list)
...// after dispatch_async was executed
NSLog("\(list)")
结果将是 [1, 2, 3, 4]
如何修改闭包内的原始变量 ()?
更新:
实际上,我有一个解决方法来处理这种情况,方法是将数组放入一个对象中,这样我就可以通过引用将该对象传递给函数,我们可以在函数内部修改相同的数组实例。但我想看看有什么聪明的方法来存档