Объем закрытия вар на Swift - PullRequest
0 голосов
/ 16 октября 2018

Я реализую список смежности с помощью Swift.

Теперь я хочу добавитьEdge, и если это значение уже существует в словаре, я хочу добавить новое ребро.

Однако,область действия if, по-видимому, находится только в следующем закрытии, то есть

if var child = children[from] {
    // child exists
    child.append(to)
}

не дает ожидаемого результата, а следующее дает

if var child = children[from] {
    children[from]!.append(to)
}

, но это выглядит уродливо и,откровенно неправильно.

Каков наилучший способ добавления словаря в этом случае?

1 Ответ

0 голосов
/ 16 октября 2018

Поскольку ваше значение словаря имеет тип значения [Int], создается копия значения словаря, которому присваивается значение child.Это означает, что любые изменения, внесенные вами в child, не будут отражены в словаре.Итак, вам нужно заменить значение на то, в которое вы внесли изменения.

if var child = children[from] {
    child.append(to)
    children[from] = child
}

Или просто

children[from]?.append(to)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...