関数における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だけが適切な型なので、一般的な引数などとして渡すことができます。
-
なぜ "Void" と呼ばないのか: "void" という単語は "nothing" という意味で、別の型があるからです。
Nothing
つまり、計算が正常に完了しなかった(永遠にループしたか、例外が発生した)ことを意味します。私たちは意味の衝突を避けることができませんでした。 -
なぜUnitは値を持つのか(つまりNothingと同じではない):そのとき汎用的なコードがスムーズに動くことができるからです。一般的なパラメータTに対してUnitを渡すと、任意のTに対して書かれたコードはオブジェクトを期待し、Unitの唯一の値であるオブジェクトが存在する必要があります。
-
どのようにUnitの値にアクセスするか:それはシングルトン・オブジェクトであるため、単に
Unit
関連
-
[解決済み] by lazy" と "lateinit" を使ったプロパティの初期化
-
[解決済み】KotlinでJavaの静的メソッドに相当するものは何ですか?
-
[解決済み] Kotlinにコンストラクタ参照はありますか?
-
[解決済み] Kotlinのゲッターとセッター
-
[解決済み] Kotlin: withContext() vs Async-await
-
[解決済み] KotlinのIterableとSequenceは全く同じに見える。なぜ2つの型が必要なのでしょうか?
-
[解決済み] アダプターまたはViewHolderでのKotlin合成
-
[解決済み] kotlinのinitブロックとコンストラクタの違いは何ですか?
-
[解決済み] ライブデータです。候補の解像度がまもなく変更されます
-
Kotlinのcrossinlineとnoinlineの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Kotlinにコンストラクタ参照はありますか?
-
[解決済み] Kotlinで多くの例外を同時にキャッチするには?
-
[解決済み] Kotlin データクラスのオーバーライドゲッター
-
[解決済み] Kotlin: withContext() vs Async-await
-
[解決済み] kotlin.jvm.KotlinReflectionNotSupportedError.KotlinReflectionNotSupportedError.KotlinReflectionNotSupportedError: ランタイムにKotlin Reflectionの実装が見つかりませんでした。kotlin-reflect.jar があることを確認してください。
-
[解決済み] Kotlinにおけるスレッドとコルーチンの違い
-
[解決済み] アダプターまたはViewHolderでのKotlin合成
-
[解決済み] kotlinのinitブロックとコンストラクタの違いは何ですか?
-
[解決済み] Kotlinで非整数のenumを定義するには?
-
KotlinのSwap関数