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
работает, потому что р является локальным, а не весь термин.