Never?Never — это необитаемый тип в Swift, то есть нельзя создать ни одного экземпляра этого типа. Он служит гарантией на этапе компиляции, что определённый путь выполнения кода или результат невозможны.
Never используется как тип возврата для функций, которые всегда прерывают выполнение — они никогда не возвращают управление вызывающему коду.
func crash() -> Never {
fatalError("Something went critically wrong")
}
Типичные примеры из стандартной библиотеки — fatalError() и preconditionFailure().
Когда функция объявлена как возвращающая Never, компилятор понимает, что никакое значение никогда не будет создано, что позволяет ему пропустить проверку исчерпывающности для этой ветки. Это делает анализ потока управления более точным и явно выражает твои намерения.
В Combine паблишеры имеют два обобщённых параметра: Output и Failure. Использование Never в качестве типа Failure сигнализирует, что паблишер никогда не может выдать ошибку:
let publisher: Just<String> // Failure == Never
Это даёт практическое преимущество — ты можешь напрямую вызвать .value на Publisher, у которого Failure равен Never, без обработки ошибок, так как компилятор гарантирует, что ошибка не произойдёт.
Never — это мощный инструмент выразительности в Swift. Он устраняет двусмысленность, сокращает бойлерплейт и позволяет компилятору обеспечить гарантии, которые иначе держались бы исключительно на дисциплине разработчика.
Тип Never в Swift — это необитаемый тип, что означает, что невозможно создать его экземпляры, а функции, возвращающие Never, гарантируют, что они никогда не вернут управление вызывающему коду.
Новый — ещё не проверен сообществом
Вы