Avatar ·

Kotlin: Void, Unit und Nothing — was ist der Unterschied und wann verwendet man was?

Hallo zusammen! Ich habe vor kurzem angefangen, Kotlin zu lernen und bin von Java umgestiegen. In Java war ich an void für Methoden gewöhnt, die nichts zurückgeben. Aber in Kotlin sehe ich gleich drei ähnliche Konzepte: Void, Unit und Nothing. Und ich bin verwirrt.

Zum Beispiel schreibe ich eine Funktion, die einfach eine Begrüßung ausgibt:

fun greet(name: String) {
    println("Hello, $name!")
}

Der Compiler sagt, der Rückgabetyp sei Unit. Aber ich kann es auch so schreiben:

fun greet(name: String): Unit {
    println("Hello, $name!")
}

Außerdem habe ich in fremdem Code Void (mit großem V) und Nothing gesehen. Als ich versuchte, Nothing als Rückgabetyp zu verwenden, sagte der Compiler, dass die Funktion niemals normal beendet wird.

Bitte erklärt mir:

  1. Was ist der Unterschied zwischen Unit, Void und Nothing?
  2. Wann sollte man was verwenden?