В Kotlin Unit — это эквивалент Java-овского void — сигнал того, что функция не возвращает значимое значение. Однако, в отличие от void, Unit — это полноценный тип с ровно одним экземпляром, также называемым Unit.
Поскольку Unit — это настоящий тип, его можно использовать как аргумент обобщённого типа, чего void в Java не может. Это особенно полезно при работе с обобщёнными интерфейсами или функциями высшего порядка.
Например, тип функции, ничего не возвращающей, можно выразить как:
() -> Unit
Это позволяет лямбдам, возвращающим Unit, удовлетворять интерфейсам вроде Function<T, Unit> без какой-либо специальной обработки.
Когда функция возвращает Unit, объявление типа возврата и оператор return можно опустить полностью:
// Явная версия
fun greet(): Unit {
println("Hello")
return Unit
}
// Идиоматичная версия — тип возврата и оператор опущены
fun greet() {
println("Hello")
}
Оба объявления эквивалентны, но второе — идиоматичный стиль Kotlin.
Unit заменяет void, но работает как тип первого классаvoid не сработал быreturn необязательны при возврате UnitВ отличие от Java void, Kotlin Unit — это полноценный тип с ровно одним экземпляром, что позволяет использовать его в качестве аргумента типа в generic'ах.
Новый — ещё не проверен сообществом
Вы