count
Cuenta cuántos elementos produce un pipeline perezoso.
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).