[英]Scope of if var closure on Swift
我正在使用Swift實現一個鄰接列表。
現在我想添加Edge,如果該值已經存在於字典中,我想添加一個新的邊緣。
但是,if var的范圍似乎只在以下閉包內,意思是
if var child = children[from] {
// child exists
child.append(to)
}
沒有產生預期的結果,但以下情況
if var child = children[from] {
children[from]!.append(to)
}
但這看起來很難看,坦白說錯了。
在這種情況下,附加到字典的最佳方法是什么?
由於您的字典值是值類型 [Int]
,因此會生成字典值的副本並將其提供給child
。 這意味着您對子項所做的任何更改都不會反映在字典中。 因此,您需要將值替換為您已進行更改的值。
if var child = children[from] {
child.append(to)
children[from] = child
}
或簡單地說,
children[from]?.append(to)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.