2015-08-05 2 views
0

мне нужно идти к ссылочного структуры:Swift: Косвенный доступ/изменяемые

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. Но в Свифт?

+0

Пожалуйста, вы также можете указать код цикла? –

ответ

0

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

knots[s] 

Я использую

p.knots[s] 

Для перескока на следующий узел, я также использую

p = p.knots[s] 

и может использовать

p.knots[s] 

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

Смежные вопросы