averageBy

La media de una clave sobre todos los elementos — map + average en un solo paso, NaN cuando está vacío.

double averageBy<A>(num Function(A a) f, Iterable<A> iterable) Future<double> averageByAsync<A>(FutureOr<num> Function(A a) f, FxAsyncIterable<A> iterable) double Fx<T>.averageBy(num Function(T a) f) // chain (sync) Future<double> FxAsync<T>.averageBy(FutureOr<num> Function(T a) f) // chain (async)

Lección

averageBy completa la familia de operadores por clave (sumBy · maxBy · minBy): extrae una clave numérica de cada elemento y promedia esas claves, en una sola pasada que lleva a la vez un total y un contador acumulados.

El contrato es el de average: un pipeline vacío devuelve double.nan (está calculando 0 / 0), nunca 0 — comprueba result.isNaN cuando la entrada pueda quedar vacía. El resultado siempre es un double.

Demo 1 · Fundamentos & el caso vacío

Demo 2 · Claves asíncronas

Pruébalo tú

Ejercicio: promedia con una sola llamada las páginas de los libros ya leídos.

Relacionado: average — cuando el pipeline ya contiene números · sumBy — el primo que calcula el numerador · maxBy · minBy — el resto de la familia