dropWhileRight
Descarta la racha más larga del final de una fuente en la que se cumple un predicado: recorta la cola.
Lección
Este es el operador de recorte. Ceros finales, líneas en blanco finales,
una cola de filas de relleno: cualquier cosa que quieras fuera del final
sin contarla antes, que es todo lo que
dropRight sabe hacer.
Solo se descarta la racha que llega hasta el final. Una racha coincidente
en mitad de la fuente no es un sufijo y se queda exactamente donde está;
es lo único que conviene contrastar con tu intuición, ya que
filter y
reject sí la habrían borrado.
A diferencia de takeWhileRight,
este va emitiendo sobre la marcha. Una racha coincidente se retiene en vez
de emitirse, porque podría resultar ser el sufijo; el primer elemento que
falla el predicado demuestra que no lo era y libera la racha
entera de golpe. Así el coste en memoria es la racha más larga, no la
longitud de la fuente, y los valores siguen fluyendo mientras la fuente
está abierta.
Sobre una List la racha 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. Mantén el predicado puro.
Demo 1 · Fundamentos
Demo 2 · Asíncrono, y el reparto
Pruébalo tú
Ejercicio: descarta los ceros finales y conserva el resto.
takeWhileRight — el complemento: conserva esa misma racha ·
dropRight — recorta un tramo final por cantidad ·
skipWhile — la misma idea desde el principio ·
whereNot — borra coincidencias en cualquier parte, no solo al final