1. ホーム
  2. kotlin

関数におけるUnit-returnの目的とは?

2023-10-13 06:20:40

質問

Kotlinのドキュメントより。

関数が有用な値を返さない場合、その戻り値の型はUnitです。Unitは1つの値-Unit.VALUE-だけを持つ型です。この値は明示的に返される必要はありません。

fun printHello(name : String?) : Unit { 
   if (name != null) 
     print("Hello, $name!") 
   else 
     print("Hi there!") 
   // We don't need to write 'return Unit.VALUE' or 'return', although we could 
}

関数におけるUnit-returnの目的は何ですか?なぜVALUEがあるのですか?このVALUEは何ですか?

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

目的はC言語やJavaと同じです。 void . Unitだけが適切な型なので、一般的な引数などとして渡すことができます。

  1. なぜ "Void" と呼ばないのか: "void" という単語は "nothing" という意味で、別の型があるからです。 Nothing つまり、計算が正常に完了しなかった(永遠にループしたか、例外が発生した)ことを意味します。私たちは意味の衝突を避けることができませんでした。

  2. なぜUnitは値を持つのか(つまりNothingと同じではない):そのとき汎用的なコードがスムーズに動くことができるからです。一般的なパラメータTに対してUnitを渡すと、任意のTに対して書かれたコードはオブジェクトを期待し、Unitの唯一の値であるオブジェクトが存在する必要があります。

  3. どのようにUnitの値にアクセスするか:それはシングルトン・オブジェクトであるため、単に Unit