Что выведет код Middle Ошибки обновлено
Что выведет Swift: try? и опциональный результат
Вопрос
Что выведет код?
enum ParseError: Error { case bad }
func parse(_ s: String) throws -> Int? {
if s == "x" { throw ParseError.bad }
return Int(s)
}
let a = try? parse("12")
let b = try? parse("zz")
let c = try? parse("x")
print(a as Any, b as Any, c as Any)
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: Optional(12) nil nil. С Swift 5 try? не добавляет второй уровень опционала, если выражение уже опционально (SE-0230).
Что выведет
Optional(12) nil nil
Разбор
С Swift 5 try? не добавляет второй уровень опционала, если выражение уже опционально (SE-0230). Все три значения типа Int?. Поэтому «не разобралось» и «бросило ошибку» неразличимы: оба nil.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.