Ce n'type de retour Void signifie en Kotlin
J'ai essayé de créer la fonction sans valeur de retour dans Kotlin. Et j'ai écrit une fonction comme en Java, mais avec Kotlin syntaxe
fun hello(name: String): Void {
println("Hello $name");
}
Et j'ai une erreur
Erreur:Un "retour" de l'expression nécessaire dans une fonction avec une
bloc de corps ('{...}')
Après quelques modifications que j'ai obtenu de travail de la fonction avec les valeurs null Void comme type de retour. Mais ce n'est pas exactement ce dont j'ai besoin
fun hello(name: String): Void? {
println("Hello $name");
return null
}
Selon Kotlin documentation Unité type correspond au type void en Java. Donc la bonne fonction sans valeur de retour dans Kotlin est
fun hello(name: String): Unit {
println("Hello $name");
}
Ou
fun hello(name: String) {
println("Hello $name");
}
La question est: Qu'est - Void
dire dans Kotlin, comment l'utiliser et quel est l'avantage d'une telle utilisation?
OriginalL'auteur Mara | 2017-06-29
Vous devez vous connecter pour publier un commentaire.
Void
est une simple classe Java et n'a pas de signification particulière dans Kotlin.De la même façon, vous pouvez utiliser
Integer
dans Kotlin, qui est une classe Java (mais il devrait utiliser Kotlin deInt
). Vous avez bien mentionné les deux façons de ne pas retourner quoi que ce soit. Ainsi, dans KotlinVoid
est "quelque chose"!Le message d'erreur que vous obtenez, vous dit exactement que. Vous avez spécifié un (Java) de la classe comme type de retour, mais que vous n'utilisez pas l'instruction de retour dans le bloc.
S'en tenir à cela, si vous ne voulez pas rentrer n'importe quoi:
OriginalL'auteur Willi Mentzel
Void
est un objet en Java, et signifie autant que "rien".Dans Kotlin, il y a des types spécialisés pour "rien":
Unit
-> remplace javavoid
Nothing
-> "une valeur qui n'existe jamais'Maintenant dans Kotlin vous peut référence
Void
, comme vous pouvez le faire référence à n'importe quelle classe de Java, mais vous ne devriez vraiment pas. Au lieu de cela, utiliserUnit
. Aussi, si vous retournezUnit
, vous pouvez l'omettre.Void
(qui est vraiment:java.lang.Void
) n'est pas une , est un de la classe en Java. Vous ne pouvez pas faire les instances de cette classe.OriginalL'auteur nhaarman