如果我从另一个数组创建数组,如:

var ArrayOne = [1,2,3,4]
var ArrayTwo = ArrayOne
var ArrayThree = ArrayTwo

现在根据数组的赋值和复制行为,如果我改变ArrayTwo中的任何值,它将反映在ArrayOne和arraytree中。但是如果我在arrayTwo中追加/删除,它将不会在ArrayOne/ArrayThree中反映出来,因为array的实例发生了变化。
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

是否有任何方法可以同时修改所有数组,而不必在每次修改时创建数组的新副本/实例(append/remove)。

最佳答案

数组、字典和字符串都是结构,并以Swift形式按值传递。要获得这种行为,可以尝试使用NSArray或创建自己的Swift类。

关于arrays - Swift中数组的分配和复制行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24507141/

10-13 04:40