zipWith
Empareja dos iterables y combina cada par a través de una función, en un solo paso.
Lección
zipWith es exactamente zip seguido de
map sobre los pares resultantes — de hecho así está
implementado en FxDart, como
map((r) => f(r.$1, r.$2), zip(...)). Recurre a él cuando en
realidad no quieres el record (A, B) intermedio, sino solo el
resultado combinado: multiplicar dos listas paralelas, formatear un nombre
y una edad en una sola etiqueta, y cosas así.
Se detiene en la más corta de las dos entradas, igual que
zip, y la forma asíncrona zipWithAsync hereda de
zipAsync el tirar en paralelo por par. No hay forma
encadenable en Fx para zipWith: llama
directamente a la función de nivel superior (o constrúyela tú mismo como
.zip(other).map((r) => f(r.$1, r.$2))).
Demo 1 · Fundamentos
Demo 2 · Asíncrono
Pruébalo tú
Ejercicio: usa zipWith para calcular el total de línea
(price * quantity) de cada par.
zip — la versión de pares simples sobre la que se construye ·
zipWithIndex — emparejar con un índice creciente ·
map