Avatar ·

Kotlin:Void、Unit和Nothing — 有什么区别以及何时使用?

大家好!我最近开始学习Kotlin,从Java转过来。在Java中,我习惯用void表示不返回任何内容的方法。但在Kotlin中,我看到了三个类似的概念:Void、Unit和Nothing。我有点困惑。

例如,我写一个只打印问候语的函数:

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

编译器说返回类型是Unit。但我也可以这样写:

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

另外,我在别人的代码中看到过Void(大写)和Nothing。当我尝试使用Nothing作为返回类型时,编译器说该函数永远不会正常结束。

请告诉我:

  1. Unit、Void和Nothing有什么区别?
  2. 什么时候应该使用它们?