average

La media de todos los números que produce el pipeline — NaN cuando no hay ninguno.

double average(Iterable<num> iterable) Future<double> averageAsync(FxAsyncIterable<num> iterable) double Fx<num>.average() // chain (sync) Future<double> FxAsync<num>.average() // chain (async)

Lección

average es un operador terminal que recorre el pipeline entero una sola vez, llevando a la vez un total y un contador acumulados, y luego divide. Siempre devuelve un double, incluso para una lista de int normales.

El comportamiento que conviene interiorizar es este: el average de un iterable vacío es double.nan; está calculando 0 / 0, no lanza una excepción ni recurre por defecto a 0. Esto refleja exactamente lo que hace FxTS. Si tu pipeline puede quedar vacío, compruébalo de forma explícita (result.isNaN) en lugar de dar por hecho un valor numérico de reserva.

Igual que sum, la forma encadenada se expone mediante una extensión sobre Fx<num> / FxAsync<num>, así que solo está disponible cuando el compilador puede ver que el tipo de elemento de tu cadena es numérico.

Demo 1 · Fundamentos & el caso vacío

Demo 2 · Asíncrono

Pruébalo tú

Ejercicio: promedia solo las notas aprobadas (>= 60).

Relacionado: sum — el numerador de esta división · size — el denominador de esta división · min · max — los otros terminales numéricos