Swift:间接访问/可变

标签 swift pointers mutable

我需要转到引用的结构:

class SearchKnot {
    var isWord : Bool = false
    var text   : String = ""
    var toNext = Dictionary<String,SearchKnot>()    
}

插入时,我需要更新 toNext 字典中的值。因为我想避免递归,所以我在循环中进行。但我需要一个从一个到下一个项目跳转到另一个项目的变量,并且能够更改它。

var knots = toNext
...
let newKnot = SearchKnot()
knots[s] = newKnot

最后一个命令仅更改本地副本,但我需要更改原始副本。我需要间接访问。在 C 中,我将使用 *p,将其定义为 &toNext。但在 Swift 中呢?

最佳答案

我找到了解决方案。我记得过去的帕斯卡时代。 ;-) 我不使用最后一个引用文献,而是使用倒数第二个引用文献。而不是

knots[s]

我用

p.knots[s]

为了跳到下一个结,我也使用

p = p.knots[s]

并且可以使用

p.knots[s]
再次。 p.knots[s] = newKnot 也有效,因为 p 是局部的而不是整个术语。

关于Swift:间接访问/可变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31836998/

相关文章:

ios - 如何更改 UIDocumentInteractionController 完成按钮文本和背景颜色

c - 作为指针的参数未正确递增

c# - 可变结构与类?

ios - 根据 ReactiveCocoa 4 中 UITextField 中的字符数启用/禁用 UIButton

ios - iPhone X 自定义导航无法正确显示

ios - 无法创建自定义 MKAnnotationView

c - (char*) 0 是什么意思?

c - 通过元素复制分配没有元素的数组?

variables - Racket 可变变量

python - 列表列表更改意外地反射(reflect)在子列表中