获取对Dictionary值的引用

时间:2016-05-14 01:40:42

标签: swift

我需要一个像这样的数据结构。

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"

无论如何都这样做?

1 个答案:

答案 0 :(得分:2)

除非通过调用具有inout参数的函数,否则您无法在一次移动中执行此操作,如您已经显示的那样。否则,您无法在Swift中对值类型进行“引用”。通常的方式是老式,简单的方式,一步一步:你拿出内部字典,改变它,然后再把它放回去:

let key = "101"
var d = ["101": [1: "value1"]]
if var d2 = d[key] {
    d2[1] = "value2"
    d[key] = d2
}

这很无聊但很可靠。