gpt4 book ai didi

arrays - 在 Swift 中修改数组项

转载 作者:行者123 更新时间:2023-11-30 10:05:31 25 4
gpt4 key购买 nike

我在 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]] ,正如预期的那样。

有人可以帮我解释一下吗?

最佳答案

如何在 swift 中引用/传递/复制数组是很多争论的焦点,看看 this link .

本质上,发生的事情是 var first = array2d[0] 正在该索引处获取数组的副本,而不是像您期望的那样创建引用。因此,使用下标表示法访问数组可以让您正确更改数组,但创建新变量则不能。

关于arrays - 在 Swift 中修改数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36272090/

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