reverse

Devuelve la fuente en orden inverso.

Iterable<A> reverse<A>(Iterable<A> iterable) FxAsyncIterable<A> reverseAsync<A>(FxAsyncIterable<A> iterable) Fx<T> Fx.reverse() // chain FxAsync<T> FxAsync.reverse()

Lección

reverse emite los elementos de una fuente del último al primero. Igual que takeRight y dropRight, no hay forma de saber qué significa «el último» sin haberlo visto todo antes, así que reverse materializa la fuente entera en una lista antes de emitir un solo valor. Es un operador para fuentes finitas y bufferizables: nunca terminará con una fuente infinita.

reverseAsync sigue la misma regla: primero espera todos los elementos de aguas arriba y luego los reproduce del final al principio. Si solo necesitas la cola de una secuencia en lugar de una inversión de verdad, prefiere takeRight: también materializa, pero al menos para en cuanto tiene los valores que necesita para emitirlos en orden.

Demo 1 · Fundamentos

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

Pruébalo tú

Ejercicio: invierte el historial para que la visita más reciente aparezca primero.

Relacionado: takeRight — también materializa, pero solo necesita la cola · dropRight · sort — también materializa en una lista nueva