我不太理解为什么以下代码不会更新array2
和inout
的原始值。我正在尝试在一系列iVars上使用import UIKit
class ViewController: UIViewController {
// MARK: instance variables
var array1: [Int] = [1, 1, 1]
var array2: [Int] = [2, 2, 2]
// MARK: lifecycle methods
override func viewDidLoad() {
super.viewDidLoad()
var tempArray = [array1, array2]
performOperationOn(&tempArray)
print("array1: \(array1)")
print("array2: \(array2)")
print("tempArray[0]: \(tempArray[0])")
print("tempArray[1]: \(tempArray[1])")
}
// MARK: private methods
private func performOperationOn(_ array: inout [[Int]]) {
array[0][0] = 11
array[0][1] = 11
array[0][2] = 11
array[1][0] = 22
array[1][1] = 22
array[1][2] = 22
}
}
...
array1: [1, 1, 1]
array2: [2, 2, 2]
...
上面打印出:
array1: [11, 11, 11]
array2: [22, 22, 22]
有什么办法可以实现我所期望的:
tempArray[0]: [11, 11, 11]
tempArray[1]: [22, 22, 22]
打印出tempArray确实表明它正在被修改:
data
proprio_com_luz
proprio_sem_ola_acabo
但是我真的希望OG数组(array1和array2)是被修改的...想法吗?