gpt4 book ai didi

arrays - 为什么 Swift Array 的行为与其他语言的 List 不同?

转载 作者:行者123 更新时间:2023-11-28 11:52:49 26 4
gpt4 key购买 nike

var sections = [[NoteItem]]()
var section = [NoteItem]()
sections.append(section)

someOtherArray.forEach{n in
section.append(n)
}

debugPrint("\(section.count)") // prints 75 which is the length of someOtherArray
debugPrint("\(sections[0].count)") // prints 0! Why??

最后的输出是我无法理解的。在 C#、Java 和我使用过的几乎所有其他语言中,它与第二个(即 75)具有相同的输出,因为变量 sectionsections 的第一个元素这是 sections[0]只是同一个对象。

在 Swift 中,情况似乎并非如此。事实上,如果我改为这样做:

var sections = [[NoteItem]]()
var section = [NoteItem]()

someOtherArray.forEach{n in
section.append(n)
}

sections.append(section) // appending here after populating 'section'
debugPrint("\(section.count)") // prints 75 which is the length of someOtherArray
debugPrint("\(sections[0].count)") // prints 75 as expected!

我会得到预期的输出。

有人能解释一下吗?谢谢。

最佳答案

数组、字典、字符串和许多其他类型都是基于 Swift 的值。

所以“它们是同一个对象”没有意义,因为当您将它添加到部分时,您只是在复制部分值。

关于arrays - 为什么 Swift Array 的行为与其他语言的 List 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51625193/

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