join
Concatena todos los elementos en una sola cadena, con un separador entre ellos.
Lección
join es un operador terminal: tira de todo el pipeline,
llama a toString() en cada elemento y cose los resultados
intercalando sep entre ellos.
Fíjate en el orden de los argumentos — el join de nivel
superior, data-first, pone el separador primero:
join(', ', iterable). Esa es la convención de FxTS (data-first
en todas partes), y es justo la contraria del método
Iterable.join(separator) del propio Dart, que toma el iterable
como receptor y el separador como su único argumento.
Esa diferencia se filtra a la forma encadenada de un modo sutil: en la
cadena síncrona, .join(...) es simplemente el
Iterable.join nativo de Dart, cuyo separador por defecto es
'' (vacío) si se omite. Pero FxAsync.join está
escrito explícitamente en FxDart y usa como separador por defecto
',' — igual que el propio valor por defecto de FxTS. No des por
hecho que ambas cadenas se comportan igual cuando omites el argumento.
Demo 1 · Fundamentos & los dos valores por defecto
Demo 2 · Asíncrono, y su valor por defecto distinto
Pruébalo tú
Ejercicio: une las columnas en una única fila de cabecera CSV, separadas por ','.