如果我从另一个数组创建数组,例如:
var ArrayOne = [1,2,3,4]
var ArrayTwo = ArrayOne
var ArrayThree = ArrayTwo
现在根据数组的分配和复制行为,如果我更改 ArrayTwo 的任何值,它将反射(reflect)在 ArrayOne 和 ArrayThree 中。但是如果我在 arrayTwo 中追加/删除,它不会反射(reflect)在 ArrayOne/ArrayThree 中,因为数组的实例发生了变化。
ArrayTwo[0] = 100
println(ArrayTwo[0])
// 100
println(ArrayThree[0])
// 100
和
ArrayTwo.append(5)
ArrayTwo[0] = 999
println(ArrayTwo[0])
// 999
println(ArrayThree[0])
// 100
有什么方法可以同时修改所有数组,而无需在每次修改(附加/删除)时创建新的数组副本/实例。
最佳答案
数组、字典和字符串都是结构体,在 Swift 中按值传递。要获得此行为,您可以尝试使用 NSArray 或创建您自己的 Swift 类。
关于arrays - Swift 中数组的赋值和复制行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24507141/