Kotlinのfold関数の使い方と例


fold関数は、初期値と累積関数を引数として受け取り、コレクションの要素を順番に累積していく処理を行います。具体的には、初期値から始まり、各要素を累積関数に適用して最終的な結果を生成します。

以下に、fold関数の基本的な使い方を示します。

val numbers = listOf(1, 2, 3, 4, 5)
val sum = numbers.fold(0) { accumulator, number ->
    accumulator + number
}
println(sum) // 出力: 15

上記の例では、リストnumbersの要素を順番に取り出し、それぞれをaccumulatornumberという引数で受け取った累積関数に適用しています。累積関数では、現在の累積値accumulatorに要素numberを加算しています。最終的な結果はsumに格納され、15という値が出力されます。

fold関数は非常に柔軟であり、初期値や累積関数を自由にカスタマイズすることができます。例えば、文字列の連結やリストの要素の結合など、さまざまな操作に利用することができます。

また、初期値を省略することも可能です。この場合、コレクションの最初の要素が初期値として使用されます。以下に、初期値を省略した場合の例を示します。

val numbers = listOf(1, 2, 3, 4, 5)
val product = numbers.fold { accumulator, number ->
    accumulator * number
}
println(product) // 出力: 120

上記の例では、リストnumbersの最初の要素である1が初期値として使用され、それ以降の要素が累積関数に適用されます。累積関数では、現在の累積値accumulatorに要素numberを乗算しています。最終的な結果はproductに格納され、120という値が出力されます。

このように、Kotlinのfold関数はコレクションの要素を累積して処理する際に非常に便利な機能です。ぜひ、自分のプロジェクトで活用してみてください。