List.Accumulate

La función List.Accumulate devuelve el valor acumulado resultante de aplicar una función a los elementos de una lista.

Sintaxis

List.Accumulate(
    list as list,
    seed as any,
    accumulator as function
) as any

Parámetros
  • list: lista de valores a evaluar
  • seed: valor inicial a usar
  • accumulator: función binaria a aplicar a los valores
Información adicional

La función accumulator va a ir recorriendo la lista de izquierda a derecha, aplicándose a los dos primeros valores en primer lugar (o al valor seed y al primer valor, si es que se ha definido seed) y, a partir de ahí, aplicándose al resultado anterior obtenido y al siguiente valor.

Ejemplos

En este ejemplo partimos de una lista que vamos a recorrer sumando sus valores:

let
    values = {1, 2, 3, 4, 5}
in
    List.Accumulate(
        values,
        0,
        (x, y) => x + y
    )

15

Función M List.Accumulate

Siguiendo con el ejemplo anterior, si añadimos el parámetro seed, éste se usa como primer valor a considerar en el cálculo:

let
    values = {1, 2, 3, 4, 5}
in
    List.Accumulate(
        values,
        10,
        (x, y) => x + y
    )

25

Función M List.Accumulate

En este ejemplo partimos de una lista que contiene tanto números positivos como negativos y usamos la función List.Accumulate para sumar solo los valores mayores o iguales a cero:

let
    values = {1, 2, -5, 3, 4, -7, 5}
in
    List.Accumulate(
        values,
        0,
        (x, y) => if y >= 0 then x + y else x
    )

15

Función M List.Accumulate

No solo es posible trabajar con listas de números. En este ejemplo partimos de una lista de textos y concatenamos sus valores para devolver una única cadena. Obsérvese la necesidad de inicializar el parámetro seed con una cadena vacía:

let
    values = {"c", "h", "a", "o", "s"}
in
    List.Accumulate(
        values,
        "",
        (x, y) => x & y
    )

Función M List.Accumulate
Categoría
Funciones de lista
Enviado por admin el Mié, 02/09/2020 - 12:41