Kotlin: Void, Unit e Nothing — qual a diferença e quando usar cada um?
Olá a todos! Recentemente comecei a estudar Kotlin e migrei do Java. No Java, eu estava acostumado com void para métodos que não retornam nada. Mas no Kotlin, vejo três conceitos semelhantes: Void, Unit e Nothing. E fiquei confuso.
Por exemplo, escrevo uma função que simplesmente imprime uma saudação:
fun greet(name: String) {
println("Hello, $name!")
}
O compilador diz que o tipo de retorno é Unit. Mas também posso escrever assim:
fun greet(name: String): Unit {
println("Hello, $name!")
}
E também vi em código de outras pessoas Void (com letra maiúscula) e Nothing. Quando tentei usar Nothing como tipo de retorno, o compilador disse que a função nunca termina normalmente.
Por favor, me expliquem:
- Quais as diferenças entre
Unit,VoideNothing? - Quando devo usar cada um?