fold関数は、初期値と累積関数を引数として受け取り、コレクションの要素を順番に累積していく処理を行います。具体的には、初期値から始まり、各要素を累積関数に適用して最終的な結果を生成します。
以下に、fold関数の基本的な使い方を示します。
val numbers = listOf(1, 2, 3, 4, 5)
val sum = numbers.fold(0) { accumulator, number ->
accumulator + number
}
println(sum) // 出力: 15
上記の例では、リストnumbers
の要素を順番に取り出し、それぞれをaccumulator
とnumber
という引数で受け取った累積関数に適用しています。累積関数では、現在の累積値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関数はコレクションの要素を累積して処理する際に非常に便利な機能です。ぜひ、自分のプロジェクトで活用してみてください。