Почему появился Unit в Kotlin

Ответ

Unit в Kotlin — это аналог void в Java, но с ключевым отличием: это полноценный объект (синглтон), а не просто ключевое слово.

Зачем?

  1. Унификация типов — функции всегда возвращают что-то, даже если это "ничего".

  2. Работа с genericsUnit позволяет корректно использовать функции как объекты первого класса, например:

    fun doSomething(): Unit { ... }  
    val action: () -> Unit = ::doSomething  
  3. Читаемость — явное указание Unit делает код более декларативным.

Пример:

fun log(message: String): Unit {  
    println(message)  
    // return Unit можно опустить — компилятор добавит автоматически  
}  

Ответ 18+ 🔞

Э, слушай, давай разберём этот ваш Unit, а то народ путается, как слепой кот в сортире.

Вот смотри, в Kotlin эта штука — полный аналог нашего старого доброго void из Java, но с одной хитрой жопой. В Java void — это просто дырка от бублика, пустое место, нихуя. А в Kotlin Unit — это, ёпта, самый настоящий объект, синглтон, такая маленькая мартышлюшка, которая говорит: «Всё, работа сделана, но по факту я нихуя не вернула».

Ну и нахуя это надо, спросишь ты?

  1. Унификация, блядь. Чтобы не было вот этого: «Одна функция что-то возвращает, а другая — просто пшик». В Kotlin ВСЕ функции что-то возвращают. Даже если это «ничего» — это всё равно объект Unit. Красиво, чётко, без этих ваших костылей.
  2. Generics не сломать. Представь, ты хочешь передать функцию как аргумент. В Java с void начинается пиздец и танцы с бубном. А тут — легко:
    fun doSomething(): Unit { ... }
    val action: () -> Unit = ::doSomething // Всё типобезопасно, ни одной ошибки, красота!

    Без Unit такое провернуть было бы овердохуища сложнее.

  3. Читаемость, ёбана. Когда видишь fun log(): Unit — сразу ясно, что функция боком тебе ничего не подсунет, она просто отработает и уйдёт в закат. Прозрачнее некуда.

Пример, чтобы вообще всё стало как по маслу:

fun log(message: String): Unit {
    println(message)
    // Можно даже написать `return Unit`, но это как просить разрешения у собственной жены посрать. Компилятор и так всё добавит сам, не парься.
}

Короче, Unit — это не баг, а фича. Сначала кажется, что придумали велосипед, а потом понимаешь, что этот велосипед едет, не жрёт бензина и ещё кофе делает. Удобная хуйня, в общем.