我需要一个像这样的数据结构。
var d = ["101": [1: "value1"]]
我需要修改内部词典。我可以使用函数来做到这一点:
func changeIt(inout dict: [Int:String]) {
dict[1] = "value2"
}
changeIt(&d["101"]!)
编辑:我也可以这样做:
d["101"]![1] = "value3"
但我想在不调用其他功能的情况下进行此更改。这样的事情。
var sub = &d["101"]! //Does not compile
sub[1] = "value3"
无论如何都这样做?
答案 0 :(得分:2)
除非通过调用具有inout
参数的函数,否则您无法在一次移动中执行此操作,如您已经显示的那样。否则,您无法在Swift中对值类型进行“引用”。通常的方式是老式,简单的方式,一步一步:你拿出内部字典,改变它,然后再把它放回去:
let key = "101"
var d = ["101": [1: "value1"]]
if var d2 = d[key] {
d2[1] = "value2"
d[key] = d2
}
这很无聊但很可靠。