0

我不太明白为什么下面的代码不会更新array1and的原始值array2。我正在尝试inout在一系列 iVar 上使用...

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 确实表明它正在被修改:

tempArray[0]: [11, 11, 11]
tempArray[1]: [22, 22, 22]

但我真的希望 OG 数组(array1 和 array2)成为被修改的数组......想法?

4

0 回答 0