where
Devuelve un iterable perezoso con los elementos para los que el predicado devuelve true.
Lección
where es el otro transformador fundamental junto a
map: conserva todos los elementos para los que el predicado
devuelve true y descarta el resto, de forma perezosa. No se
ejecuta nada hasta que un operador terminal tira de los valores.
where es el nombre idiomático en Dart; fxdart también acepta
la grafía filter de FxTS: son el mismo operador.
Al ser perezoso, combinar where con take
evalúa solo las llamadas al predicado necesarias para satisfacer el
take — mira la Demo 1.
whereAsync tiene su propia implementación concurrente
(en vez de reutilizar la de mapAsync): cuando le añades
.concurrent(n), se evalúan n predicados en
paralelo, pero los elementos que pasan se emiten aguas abajo en su orden
original — la concurrencia cambia el rendimiento, nunca el resultado.
Demo 1 · Fundamentos & pereza
Demo 2 · Asíncrono, con concurrencia
Pruébalo tú
Ejercicio: usa where para conservar solo las edades de 18 en adelante.
reject — lo contrario de filter ·
compact — descarta los null ·
map — transforma en vez de conservar/descartar ·
concurrent — evaluación en paralelo