Como funciona a função “fold”

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
Share