slice

Devuelve los valores entre el índice start (incluido) y end (excluido).

Iterable<A> slice<A>(int start, Iterable<A> iterable, [int? end]) FxAsyncIterable<A> sliceAsync<A>(int start, FxAsyncIterable<A> iterable, [int? end]) Fx<T> Fx.slice(int start, [int? end]) // chain FxAsync<T> FxAsync.slice(int start, [int? end])

Lección

slice es una ventana de índices genérica: emite los elementos cuya posición cae en [start, end), y omitir end significa «hasta el final de la fuente». Es un único operador que engloba a la vez a drop (mediante start) y a take (mediante end).

Ojo con el orden de los argumentos en la forma data-first: a diferencia de la mayoría de funciones de FxDart, el iterable va en medio: slice(start, iterable, [end]), igual que en FxTS. La forma encadenada no tiene esta rareza, porque el iterable es el receptor: fx(iterable).slice(start, end). Por dentro, slice se limita a recorrer la fuente una vez contando índices, así que sigue siendo perezoso y funciona sin problema sobre una fuente infinita mientras le des un end.

Demo 1 · Fundamentos & orden de los argumentos

Demo 2 · Asíncrono

Pruébalo tú

Ejercicio: usa slice para quedarte con la ventana desde el índice 2 hasta el índice 5 (sin incluirlo).

Relacionado: drop — solo la mitad de slice correspondiente al índice inicial · take — solo la mitad de slice correspondiente al final o al conteo · chunk — ventanas de tamaño fijo a lo largo de toda la fuente