簡體   English   中英

Swift上if var閉包的范圍

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM