gpt4 book ai didi

arrays - 如何在swift中制作数组的浅拷贝

转载 作者:搜寻专家 更新时间:2023-11-01 05:50:36 25 4
gpt4 key购买 nike

我已经搜索了一段时间,但找不到合理的答案。我想在一个数组中添加/删除对象以在指向第一个数组的第二个数组中生效。

class Person
{
var name:String = ""
}

var arr1:[Person] = [Person]()

let p1 = Person()
p1.name = "Umair"

let p2 = Person()
p2.name = "Ali"

arr1.append(p1)
arr1.append(p2)
var arr2 = arr1

print("\(arr1.count)") //"2\n"
print("\(arr2.count)") //"2\n"

arr1.removeFirst()

print("\(arr1.count)") //"1\n"
print("\(arr2.count)") //"2\n"

为什么改变 arr1 不会影响 arr2。请帮我完成这个。

最佳答案

数组是值类型。当我们复制它们时,每个副本都相互独立。这是 Swift 的优点。您正在尝试做的事情需要引用,以便其他人可以看到对一个人的影响。试试这段代码。创建一个包含您的数据的类(引用类型)。现在可以在另一个容器中看到对容器的更改。

class Person
{
var name: String

init(_ name: String) {
self.name = name
}
}

let p1 = Person("Umair")
let p2 = Person("Ali")


class Container {
var people = [Person]()

init(people: [Person]) {
self.people = people
}
}

let arr1 = Container(people: [p1, p2])
let arr2 = arr1

print(arr1.people)
print(arr2.people)

arr1.people.removeFirst()

print(arr1.people)
print(arr2.people)

enter image description here

关于arrays - 如何在swift中制作数组的浅拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35716175/

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