Что выведет код 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 ошибок.
Предыдущий вопрос
Что выведет Swift: опциональная цепочка и ??
Следующий вопрос
Force unwrap в продакшен-коде: политика команды