count

Cuenta cuántos elementos produce un pipeline perezoso.

int count<A>(Iterable<A> iterable) Future<int> countAsync<A>(FxAsyncIterable<A> iterable) int Fx.length // sync chain: inherited Iterable getter, no parens Future<int> FxAsync.count() // async chain method int size<A>(Iterable<A> iterable) // FxTS alias

Lección

count es un operador terminal que cuenta los elementos recorriéndolos todos: no hay atajo posible, porque el pipeline de aguas arriba puede ser una cadena de map/filter evaluada de forma perezosa, sin longitud fija hasta que realmente se tira de ella. Es decir, llamar a count sobre un range de un millón de elementos con filter recorre de verdad el millón de valores; simplemente no construye una List para ello. count es el nombre idiomático en Dart; fxdart también acepta size, la grafía de FxTS: son el mismo operador.

Funciona con cualquier tipo de elemento: a diferencia de los terminales numéricos (sum, min, max, average), a count no le importa qué hay dentro del iterable, solo cuántos elementos hay.

En la cadena síncrona, count es el getter Iterable.length heredado de Dart (sin paréntesis): como Fx es un Iterable, fx(pipeline).length recorre la cadena y devuelve el total. Usa el count(iterable) de nivel superior, o .count() en la cadena asíncrona, cuando prefieras escribirlo como un operador con nombre. Si ya tienes una List concreta, su .length es gratis: recurre a count precisamente cuando quieras contar la salida de una cadena perezosa sin materializarla antes en una List con toList.

Demo 1 · Fundamentos

Demo 2 · Asíncrono

Pruébalo tú

Ejercicio: cuenta cuántas entradas están sin stock (valor == 0).

Relacionado: average — usa internamente un conteo similar a count · isEmpty — una comprobación más barata cuando solo necesitas saber «¿hay alguno?» · toList — materializa en lugar de solo contar