web-dev-qa-db-ja.com

KotlinでVoid return type meanとはどういう意味ですか?

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の意味、その使用方法、およびそのような使用法の利点は何ですか?

17
Mara

VoidはプレーンなJavaクラスであり、Kotlinでは特別な意味はありません。

KotlinでIntegerを使用できるのと同じ方法で、これはJavaクラスです(ただし、KotlinのIntを使用する必要があります)。だから、KotlinではVoidは「何か」です!

表示されるエラーメッセージは、まさにそのことを示しています。 (Java)クラスを戻りタイプとして指定しましたが、ブロックでreturnステートメントを使用しませんでした。

何も返したくない場合は、これに固執します。

fun hello(name: String) {
    println("Hello $name")
}
19
Willi Mentzel

VoidはJavaのオブジェクトであり、「何もない」ことを意味します。
Kotlinには、 'nothing'に特化したタイプがあります:

  • Unit-> Javaのvoidを置き換えます
  • Nothing-> '決して存在しない値'

Kotlinでcan reference Voidを参照してください。Javaから任意のクラスを参照できますが、実際には参照しないでください。代わりに、Unitを使用します。また、Unitを返す場合は、省略できます。

19
nhaarman