Котлин - Пустота против Юнит против Ничего - PullRequest
6 голосов
/ 02 мая 2019

Котлин имеет три типа, которые очень похожи по своей природе:

  • Void
  • Unit
  • Nothing

Кажется, что они делают ошибку JavaScript:

  • null
  • undefined
  • void(0)

Предполагая, что они не не впали в одну и ту же ошибку, для чего они все и чем они отличаются?

Ответы [ 2 ]

11 голосов
/ 02 мая 2019

Тип Void из Java. Обычно вы не будете использовать это из Kotlin, если не используете какую-то Java-библиотеку, которая ее использует.

Тип Unit - это то, что вы возвращаете из функции, которая не возвращает ничего интересного. Такая функция обычно выполняет какой-то побочный эффект. Тип устройства имеет только одно возможное значение, которое Unit.VALUE. Вы используете Unit в качестве типа возврата в Kotlin, когда вы будете использовать void (строчная буква v) в Java.

Тип Nothing не имеет значений. Если функция имеет тип возврата Nothing, то она не может возвращаться нормально. Он должен либо сгенерировать исключение, либо войти в бесконечный цикл. Код, следующий за вызовом функции с типом возврата Nothing, будет помечен как недоступный компилятором Kotlin.

Поскольку Nothing не имеет значений, Nothing? на самом деле является типом, который фиксирует только значение null в Kotlin.

4 голосов
/ 02 мая 2019

Void является простым классом Java и не имеет никакого особого значения в Kotlin.

Unit заменено Java void (уведомление не Void)

Nothing являетсязначение, которое никогда не существовало.Если вы выбросили ошибку, это Nothing.Подробнее здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...