gpt4 book ai didi

arrays - 数组引用/值

转载 作者:行者123 更新时间:2023-11-30 14:14:54 24 4
gpt4 key购买 nike

我有一些数组:

var arrayOne = [String]()
var arrayTwo = [String]()
var arrayThree = [String]()

然后我写一个函数。我给出一个数字,它返回我的以下数组之一:

func get_array(aNumber:Int) -> NSArray {
var arr = self.arrayOne //default
if aNumber == 1 {
arr = self.arrayOne
} else if aNumber == 2 {
arr = self.arrayTwo
} else if aNumber == 3 {
arr = self.arrayThree
}
return arr!
}

那么例如我这样做:

var myArray = get_array(2)
myArray.append("hello")
NSLog("myArray: %@", myArray) // Ok, myArray was modified!!

NSLog("arrayTwo: %@", arrayTwo) // **Shit, arrayTwo was not modified!!** I was expecting myArray to be pointing to arrayTwo, so they are the same object

怎么能做到这一点???

最佳答案

Swift 数组是值类型。这意味着

let array2 = array1

制作 array1 的副本。因此,当您访问 array2 时,它不再是与 array1 相同的数组,而是具有相同内容的另一个对象。

这与 NSArray 和 NSMutableArray 不同,它们是引用类型:当你这样做时

let nsarray2 = nsarray1

这次 nsarray2 是对 nsarray1 的引用,它们实际上是同一个对象。

关于arrays - 数组引用/值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31314197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com