sum
Suma todos los números que produce un pipeline perezoso.
Lección
sum es un operador terminal y uno de los pliegues
especializados más simples de la librería: por dentro es literalmente
fold(0, (a, b) => a + b, iterable). Como todo operador
terminal, llamarlo tira de todo el pipeline perezoso que tiene aguas arriba:
puedes montar una cadena elaborada de pasos map/filter
y solo pagas por los valores que sum realmente necesita, que
son todos.
Como el valor inicial es 0, sumar un iterable vacío da
0: ni error, ni NaN. Eso lo diferencia de sus
vecinos min,
max y
average, cada uno con su propio
comportamiento (¡sorprendente!) ante entradas vacías, que conviene conocer.
La forma encadenada está disponible como método de extensión,
Fx<num>.sum() / FxAsync<num>.sum():
solo aparece cuando el tipo de elemento de tu cadena se sabe que es
num (o int/double, gracias a la
covarianza de los genéricos).
Demo 1 · Fundamentos
Demo 2 · Asíncrono
Pruébalo tú
Ejercicio: suma solo los números pares de la lista.