gpt4 book ai didi

arrays - 对数组的 Swift 对象引用?

转载 作者:搜寻专家 更新时间:2023-10-31 08:16:32 24 4
gpt4 key购买 nike

我可能错过了一个关于 swift 的重要信息。我有一张 map 包含一个 key/swift 数组对。我更改了数组, map 内的数组没有更改。有人可以解释发生了什么吗?谢谢!

var map = [String:[String]]()
var list = [String]()
map["list"] = list //output: "["list": []]\n"
print(map)

list.append("test")
print(list) //output: "["test"]\n"
print(map) //output: "["list": []]\n"

最佳答案

如您所知,这些(字典和数组)是 value types .所以一般来说,您正在寻找的技术只是简单地从字典中取出数组,修改它,然后再放回去:

var map = [String:[String]]()
map["list"] = [String]()

var list = map["list"]!
list.append("test")
map["list"] = list

但是,还有另一种方法:您可以获得某种指向字典内数组的指针,但前提是您使用带有 inout 参数的函数。例如:

var map = [String:[String]]()
map["list"] = [String]()

func append(s : String, inout to arr : [String]) {
arr += [s]
}
append("test", to: &(map["list"]!))

这实际上只是同一事物的符号,但如果您要进行大量此类操作,您可能会更喜欢它。

关于arrays - 对数组的 Swift 对象引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35952024/

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