1. ホーム
  2. kotlin

[解決済み] Kotlin - ボイド vs. ユニット vs. ナッシング

2023-02-20 18:57:27

質問

Kotlinには、よく似た3つの型があります。

  • Void
  • Unit
  • Nothing

ほとんどJavaScriptの間違いのような気がします。

  • null
  • undefined
  • void(0)

仮に していない 同じ間違いに陥っていないと仮定して、これらはすべて何のためにあり、どう違うのでしょうか?

どのように解決するのですか?

この Void 型はJavaからのものです。これを使用するJava-libraryを使用していない限り、Kotlinからこれを使用することは一般的にないでしょう。

Unit 型は、関心のあるものを何も返さない関数から返すものです。そのような関数は通常、何らかの副作用を実行しています。ユニット型が取り得る値はただ一つで、それは Unit オブジェクト . あなたが使うのは Unit を使用する場合、Kotlin では戻り値の型として void (小文字のv)を使うところを、Kotlinでは戻り値の型として使っています。

Nothing 型は値を持ちません。関数が戻り値の型を持つ場合 Nothing を持つ場合、それは正常に戻ることができません。例外を投げるか、無限ループに入るしかありません。戻り値の型を持つ関数の呼び出しに続くコードは Nothing を持つ関数の呼び出しに続くコードは、Kotlinコンパイラによって到達不能とマークされます。

なぜなら Nothing は値を持たないからです。 Nothing? のみをキャプチャするタイプです。 null の値のみをキャプチャする型です。