takeUntilInclusive

Emite valores hasta que el predicado coincide — el elemento coincidente sí se incluye.

Iterable<A> takeUntilInclusive<A>(bool Function(A a) f, Iterable<A> iterable) FxAsyncIterable<A> takeUntilInclusiveAsync<A>(FutureOr<bool> Function(A a) f, FxAsyncIterable<A> iterable) Fx<T> Fx.takeUntilInclusive(bool Function(T a) f) // chain FxAsync<T> FxAsync.takeUntilInclusive(FutureOr<bool> Function(T a) f)

Lección

takeUntilInclusive es el pariente cercano de takeWhile, con una diferencia deliberada: emite el elemento que hizo verdadero el predicado y luego se detiene. takeWhile se detiene antes del elemento que falla; takeUntilInclusive se detiene después del que coincide. Recurre a él siempre que el elemento coincidente forme parte de la respuesta: «lee el log hasta el primer error, incluido», «recoge los pasos hasta el terminador, incluido».

FxTS lo llamaba originalmente takeUntil; FxDart mantiene takeUntil (y takeUntilAsync) como alias @Deprecated por paridad con el original, pero el código nuevo debería llamar directamente a takeUntilInclusive.

Demo 1 · Fundamentos

Demo 2 · Asíncrono

Pruébalo tú

Ejercicio: toma las líneas del log hasta el primer 'ERROR', incluido.

Relacionado: takeWhile — se detiene antes de la coincidencia y la excluye · dropUntil — el equivalente en el lado de drop · take — toma por cantidad