zip
Empareja los elementos de dos iterables en records y se detiene en el más corto.
Lección
zip recorre dos iterables en paralelo y produce un par por
paso, deteniéndose en cuanto cualquiera de las entradas se agota. Donde
FxTS devuelve una tupla de TS, FxDart devuelve un
record de Dart — (A, B) — de modo que
desestructuras los resultados con .$1/.$2 o con
pattern matching, en lugar de con índices de array. Como Dart no tiene
genéricos variádicos, cada aridad tiene su propia función:
zip para dos iterables y
zip3 para tres.
zipAsync lanza las llamadas a next() de ambos
lados antes de esperar a ninguna de las dos, así que tira de las
dos fuentes en paralelo en cada par, no secuencialmente. Combinar dos
fuentes de 100 ms por elemento sigue costando ~100 ms por par, no 200 ms.
Demo 1 · Fundamentos
Demo 2 · Asíncrono, tirando en paralelo por par
Pruébalo tú
Ejercicio: combina names y ages con zip en
records (name, age).
zipWith — emparejar y combinar en un solo paso ·
zipWithIndex — emparejar con un índice creciente ·
transpose — emparejar un número arbitrario de filas ·
concat — encadenar en vez de emparejar