whereNot

Se queda con todos los elementos para los que un predicado devuelve false — la imagen especular de filter.

Iterable<A> whereNot<A>(bool Function(A a) f, Iterable<A> iterable) FxAsyncIterable<A> whereNotAsync<A>(FutureOr<bool> Function(A a) f, FxAsyncIterable<A> iterable) Fx<T> Fx.whereNot(bool Function(T a) f) // chain FxAsync<T> FxAsync.whereNot(FutureOr<bool> Function(T a) f) Iterable<A> reject<A>(bool Function(A a) f, Iterable<A> iterable) // FxTS alias

Lección

whereNot está implementado como where((a) => !f(a), iterable): existe puramente por legibilidad. list.whereNot(isInvalid) se lee de forma más natural que list.where((a) => !isInvalid(a)), sobre todo cuando el predicado ya tiene un nombre claro y en positivo. whereNot es el nombre idiomático en Dart; fxdart también acepta reject, la grafía de FxTS: son el mismo operador. Elige entre where y whereNot el que te evite escribir una negación en el punto de llamada.

Todo el comportamiento de where se traslada sin cambios: es perezoso, y la forma asíncrona hereda el camino concurrente dedicado de whereAsync, así que .concurrent(n) evalúa realmente n predicados en paralelo sin dejar de devolver los resultados en el orden original.

Demo 1 · Fundamentos

Demo 2 · Asíncrono, con concurrencia

Pruébalo tú

Ejercicio: usa whereNot para descartar las líneas 'info: ok' y quedarte solo con los errores.

Relacionado: filter — la función en la que reject delega · compact — descarta específicamente los nulos · uniq — elimina duplicados · concurrent — evaluación paralela