кой нужен Nothing, и почему Unit нельзя было использовать для этого?
Потому что юнит можно реально вернуть из функции, а Nothing нет
Unit обозначает "успешное ничто" - результат исполнения блока кода, который не вычисляет ценных для дальнейшего использования результатов, например println("foo") выводит строку "foo" в консоль (побочное действие), а значимого непосредственного результата не имеет. Nothing обозначает "неуспешное ничто" или противоречие - блок кода, который не может успешно завершиться. Основная цель - указать компилятору, что дальнейшая проверка соответствия типов не нужна, так как до строчек за той, которая возвращает Nothing мы дойти при исполнении не можем (эта строчка должна упасть по определению Nothing)
Обсуждают сегодня