takeLast

Devuelve un iterable perezoso con los últimos length valores de una fuente.

Iterable<A> takeLast<A>(int length, Iterable<A> iterable) FxAsyncIterable<A> takeLastAsync<A>(int length, FxAsyncIterable<A> iterable) Fx<T> Fx.takeLast(int count) // chain FxAsync<T> FxAsync.takeLast(int count) Iterable<A> takeRight<A>(...) // FxTS alias

Lección

takeLast es la imagen especular de take: en lugar de los primeros length valores, obtienes los últimos. Pero hay una pega: para saber cuáles son los «últimos», takeLast tiene que ver antes todos los elementos. Internamente materializa la fuente entera en una lista antes de emitir nada, así que, a diferencia de la mayoría de operadores de FxDart, no funciona sobre secuencias infinitas. takeLast es el nombre idiomático en Dart; fxdart también acepta takeRight, la grafía de FxTS: son el mismo operador.

La versión asíncrona tiene la misma restricción: takeLastAsync vacía todo lo que hay aguas arriba (esperando cada elemento) antes de poder devolver la cola. Úsalo solo cuando sepas que la fuente es finita y lo bastante pequeña como para almacenarla en memoria.

Demo 1 · Fundamentos

Demo 2 · Asíncrono (primero hay que almacenar toda la fuente en memoria)

Pruébalo tú

Ejercicio: quédate solo con las últimas 3 puntuaciones.

Relacionado: take — los primeros n en vez de los últimos n · dropRight — descarta los últimos n · reverse — también materializa la fuente · slice — una ventana de índices arbitraria