Что выведет код Senior Опционалы обновлено

Что выведет Swift: двойной опционал в словаре

Вопрос

Что выведет код?

var dict: [String: Int?] = ["a": 1, "b": nil]
print(dict.count)
dict["a"] = nil
print(dict.count)
dict["b"] = .some(nil)
print(dict.keys.sorted())

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: 2, 1, ["b"]. Изначально два ключа, один из них со значением nil.

Что выведет

2
1
["b"]

Разбор

Изначально два ключа, один из них со значением nil. Присваивание nil через сабскрипт удаляет ключ a. Чтобы записать именно «значение nil», нужно .some(nil): ключ b остаётся. В словаре только b.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме