Swift: непрямой доступ / изменяемый

Мне нужно перейти к ссылочной структуре:

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

При вставке мне нужно обновить значения в словаре toNext. Поскольку я хочу избежать рекурсии, я делаю это в цикле. Но там мне нужна переменная, которая переходит от одного элемента toNext к другому, способного изменить его.

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

Последняя команда изменяет только локальную копию, но мне нужно изменить оригинал. Мне нужен косвенный доступ. В CI я бы использовал * p, где я определил его как & toNext. Но в Свифте?

1 ответ

Я нашел решение. Я вспомнил старые паскальные дни.;-) Я использую не последнюю ссылку, а вторую последнюю. Вместо

knots[s]

я использую

p.knots[s]

Для перехода к следующему узлу я также использую

p = p.knots[s]

и мог бы использовать

p.knots[s]

снова. Также p.knots[s] = newKnot работает, потому что р является локальным, а не весь термин.

Другие вопросы по тегам