【发布时间】:2016-03-28 22:09:43
【问题描述】:
我在 Swift 中发现了一些非常奇怪的行为。代码如下:
var array2d: [[Int]] = [[1]]
print(array2d) // prints [[1]]
var first = array2d[0]
first.append(2)
print(array2d) // still prints [[1]]!!!
我完全希望最后一行打印[[1, 2]]。我无法解释当前的行为。我希望array2d[0] 返回对第一项的引用,或者可能是该引用的副本。无论哪种情况,修改该对象都应该修改array2d。但事实并非如此。
但是,如果我像这样更新数组:
array2d[0].append(2)
然后按预期打印[[1, 2]]。
有人可以帮我解释一下吗?
【问题讨论】: