map
Devuelve un iterable perezoso con los valores que resultan de pasar cada elemento por una función.
Lección
map es el transformador más fundamental: aplica una función
a cada elemento. En FxDart es perezoso — llamar a
map no hace absolutamente nada de trabajo. La función solo se
ejecuta cuando un operador terminal (toList,
each, reduce, …) tira de los valores a través
del pipeline. Eso significa que puedes hacer map sobre una
secuencia enorme — incluso infinita — mientras solo pidas lo que
necesitas.
Viene en forma data-first (map(f, iterable)) y como método de
cadena (fx(iterable).map(f)). Ambas devuelven el mismo
resultado perezoso.
Demo 1 · Fundamentos & pereza
Fíjate en que la función de mapeo solo se ejecuta para los 3 valores que
take(3) pide — de un millón:
Demo 2 · Asíncrono, con concurrencia
mapAsync (o .toAsync().map(...)) acepta una
función asíncrona. Por sí sola espera cada elemento en orden; añade
concurrent(n) y aguas arriba se evalúan n
elementos a la vez — los resultados siguen llegando en orden:
Pruébalo tú
Ejercicio: usa map para convertir esta lista de maps en una
lista de nombres formateados como "KIM (32)".
mapEffect — igual que map, pero señala efectos secundarios ·
flatMap — map + aplanado ·
peek — observar sin transformar ·
concurrent — evaluación en paralelo