[解決済み] Kotlinのfoldとreduceの違い、いつどちらを使うか?
2022-04-24 20:21:57
質問
私は両方の関数でかなり混乱しています
fold()
と
reduce()
をKotlinで使う場合、両者を区別する具体例をどなたか教えていただけませんか?
どのように解決するのですか?
fold
は初期値をとり、最初に渡すラムダはその初期値とコレクションの最初の要素をパラメータとして受け取ります。
例えば、整数のリストの和を計算する次のようなコードを考えてみよう。
listOf(1, 2, 3).fold(0) { sum, element -> sum + element }
ラムダを最初に呼び出すときは、パラメータ
0
と
1
.
初期値を渡す機能があると、何らかのデフォルト値やパラメータを操作に提供する必要がある場合に便利です。例えば、リスト内の最大値を探していて、何らかの理由で少なくとも10を返したい場合、次のようにします。
listOf(1, 6, 4).fold(10) { max, element ->
if (element > max) element else max
}
reduce
は初期値を取らず、コレクションの最初の要素をアキュムレータとして開始します(これを
sum
を使用します。)
例えば、また整数の和をやってみましょう。
listOf(1, 2, 3).reduce { sum, element -> sum + element }
ここで最初にラムダを呼び出すときは、パラメータを指定します。
1
と
2
.
を使用することができます。
reduce
は、適用するコレクション内の値以外には依存しない操作の場合です。
関連
-
[解決済み] Kotlin : インタフェース Queue のコンストラクタがない。
-
[解決済み] Kotlinの「?:」は何をするのか?(エルビス演算子)
-
[解決済み] const "と "val "の違いは何ですか?
-
[解決済み] Kotlinのvarとvalの違いは何ですか?
-
[解決済み】「不適切なブロッキングメソッドの呼び出し」を適切にする方法は?
-
[解決済み】Kotlin : パブリック get プライベート set var
-
[解決済み] 縮小、折りたたみ、スキャン(左/右)?
-
[解決済み] Kotlin の `forEach` における `break` と `continue` について
-
[解決済み] Kotlinのトライウィズリソース
-
[解決済み] Kotlinでhashmapを繰り返し処理するには?
最新
-
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の'let'キーワードの目的は何ですか [重複]。
-
[解決済み] kotlinで "instanceof "クラスを確認する方法は?
-
[解決済み】Kotlin:関数を他の関数にパラメータとして渡すには?
-
[解決済み】「不適切なブロッキングメソッドの呼び出し」を適切にする方法は?
-
[解決済み] Kotlin の単一感嘆符
-
[解決済み] Kotlinでログを取るための慣用的な方法
-
[解決済み] なぜKotlinではJavaの静的フィールドの代わりのようなものとして「コンパニオンオブジェクト」を使うのか?
-
[解決済み] Kotlinで'by'キーワードは何をするのですか?
-
[解決済み] MutableLiveData。コルーチンからバックグラウンドスレッドでsetValueを実行できない