Kotlinで値を返さずに関数を作成しようとしました。そして、私はJavaのような関数を書いたが、Kotlin構文で
fun hello(name: String): Void {
println("Hello $name");
}
そして、私はエラーを持っています
エラー:ブロックボディ( '{...}')を持つ関数には 'return'式が必要です
いくつかの変更後、戻り値の型としてnullable Voidを使用した関数を使用しています。
fun hello(name: String): Void? {
println("Hello $name");
return null
}
Kotlin documentation によると、ユニットタイプはJavaのvoidタイプに対応しています。したがって、Kotlinに値を返さない正しい関数は
fun hello(name: String): Unit {
println("Hello $name");
}
または
fun hello(name: String) {
println("Hello $name");
}
問題は、KotlinでのVoid
の意味、その使用方法、およびそのような使用法の利点は何ですか?
Void
はプレーンなJavaクラスであり、Kotlinでは特別な意味はありません。
KotlinでInteger
を使用できるのと同じ方法で、これはJavaクラスです(ただし、KotlinのInt
を使用する必要があります)。だから、KotlinではVoid
は「何か」です!
表示されるエラーメッセージは、まさにそのことを示しています。 (Java)クラスを戻りタイプとして指定しましたが、ブロックでreturnステートメントを使用しませんでした。
何も返したくない場合は、これに固執します。
fun hello(name: String) {
println("Hello $name")
}
Void
はJavaのオブジェクトであり、「何もない」ことを意味します。
Kotlinには、 'nothing'に特化したタイプがあります:
Unit
-> Javaのvoid
を置き換えますNothing
-> '決して存在しない値'Kotlinでcan reference Void
を参照してください。Javaから任意のクラスを参照できますが、実際には参照しないでください。代わりに、Unit
を使用します。また、Unit
を返す場合は、省略できます。