Swift

时间:2018-10-16 04:56:48

标签: swift

我正在使用Swift实现邻接表。

现在,我要添加Edge,如果该值已经存在于字典中,我想添加一个新边。

但是,if var的范围似乎仅在以下闭包之内,即

if var child = children[from] {
    // child exists
    child.append(to)
}

不会产生预期的结果,但是以下结果会

if var child = children[from] {
    children[from]!.append(to)
}

但这看起来很丑,坦率地说是错误的。

在这种情况下,追加到字典的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

由于您的词典值是值类型 [Int],因此将创建词典值的副本并将其赋予child。这意味着您对子级所做的任何更改都不会反映在词典中。因此,您需要用对其进行更改的值替换该值。

if var child = children[from] {
    child.append(to)
    children[from] = child
}

或者简单地

children[from]?.append(to)