Descrição:
É uma função que acumula valores de um Array por meio de um operador aritimético, iniciando da esquerda(acumulador) para a direita(iterador), com o valor inicial informado na chamada da função.
acumulador: Faz referência ao valor acumulado
iterador: Faz referência a posição no array que será utilizada para acumular (array[iterador])
Tomando como base o exemplo 01, o acumulador começa com o valor 0 e o iterador com a posição 0 (valores[iterador]) do array, que no exemplo teria o valor 4. Esses valores serão iterados e acumulados de acordo com o operador aritmético utilizado, que nesse caso foi o operador de somar (+).
Na primeira iteração o acumulador vai valer 4
Na Segunda iteração ele vai somar com a próxima posição de iterador (valores[1]) e vai valer 9
Esse processo vai se repetir até a última posição e no final, será somado o ValorInicial com o acumulador, resultando em 41.
Exemplo 01:
fun main(){
val valores = intArrayOf(4,5,6,7,9)
val valorInicial = 10
val valorFinal = valores.fold(valorInicial){ acumulador, iterador ->
acumulador + iterador
}
println("Valor Inicial: $valorInicial")
print("Valor Final: $valorFinal")
}
Saída:
Valor Inicial: 10
Valor Final: 41
Exemplo 02:
fun main(){
val valores = intArrayOf(4,5,6,7,9)
val valorInicial = 10
val valorFinal = valores.fold(valorInicial){acumulador, iterador ->
acumulador * iterador
}
println("Valor Inicial: $valorInicial")
print("Valor Final: $valorFinal")
}
Saída:
Valor Inicial: 10
Valor Final: 75600