takeWhileRight
Conserva la racha más larga del final de una fuente en la que se cumple un predicado, en el orden de la fuente.
Lección
takeRight toma los últimos
n elementos; takeWhileRight toma los últimos que
coinciden, sean los que sean. Es a
takeRight lo que takeWhile
es a take: un predicado donde el
otro quería una cantidad.
Solo cuenta la racha que llega hasta el final. Si el último elemento ya falla, el resultado está vacío por larga que fuera la racha que había justo antes. Eso es lo que lo convierte en un operador de sufijo y no en una búsqueda de «la racha más larga en cualquier parte».
El resultado vuelve en el orden de la fuente, no invertido,
así que encadena con todo lo demás de la biblioteca y encaja con
dropWhileRight: entre los
dos parten una fuente sin perder ni repetir nada.
No puede emitirse nada antes de que la fuente termine: hasta que no llega
el último elemento, no se sabe de ningún elemento que pertenezca al
sufijo. Sobre una List la racha final se busca caminando
hacia atrás desde el final, así que el predicado solo ve esa racha; sobre
cualquier otra fuente se prueba cada elemento en orden y la racha actual
se almacena en memoria. Mantén el predicado puro y la diferencia no te
alcanzará.
Demo 1 · Fundamentos
Demo 2 · Asíncrono, y el reparto
Pruébalo tú
Ejercicio: conserva solo la racha final de lecturas iguales o superiores a 30.
dropWhileRight — el complemento: descarta esa misma racha ·
takeRight — un tramo final por cantidad ·
takeWhile — la misma idea desde el principio ·
filter — coincidencias en cualquier parte, no solo al final