swift – 如何在字典中改变数组?
发布时间:2020-12-14 04:48:59 所属栏目:百科 来源:网络整理
导读:我在游乐场尝试了以下内容: var d1 = [String: [String]]()d1["a"] = [String]()var a1 = d1["a"]!a1.append("s1")println(d1) 输出是:[a:[]] 我希望:[a:[“s1”]] 在字典中改变数组的正确方法是什么? 解决方法 在swift中,结构在被赋值给新变量时按值
我在游乐场尝试了以下内容:
var d1 = [String: [String]]() d1["a"] = [String]() var a1 = d1["a"]! a1.append("s1") println(d1) 输出是:[a:[]] 在字典中改变数组的正确方法是什么? 解决方法
在swift中,结构在被赋值给新变量时按值复制.因此,当您将a1分配给字典中的值时,它实际上会创建一个副本.这是我正在谈论的界限:
var a1 = d1["a"]! 一旦调用该行,实际上有两个列表:d1 [“a”]引用的列表和a1引用的列表.因此,当您调用以下行时,只会修改第二个列表: a1.append("s1") 当您进行打印时,您将打印第一个列表(存储为字典d1中的键“a”).以下是两种可用于获得预期结果的解决方案. 选项1:直接附加到d1内的数组. var d1 = [String : [String]]() d1["a"] = [String]() d1["a"]?.append("s1") println(d1) 选项2:附加到复制的数组并将该值分配给d1中的“a”. var d1 = [String : [String]]() d1["a"] = [String]() var a1 = d1["a"]! a1.append("s1") d1["a"] = a1 println(d1) 第一种解决方案性能更高,因为它不会创建列表的临时副本. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |