tap

Llama a una función con un valor por su efecto secundario y luego devuelve el valor sin cambios.

T tap<T>(void Function(T a) f, T a)

Lección

tap es data-first: tap(f, value) ejecuta f(value) —normalmente un print, una llamada de log u otro efecto secundario— y luego te devuelve value tal cual. Existe para que puedas espiar un valor sin romper la expresión de la que forma parte: envuelve cualquier valor individual en tap y el código de alrededor no necesita cambiar en absoluto.

tap opera sobre un valor cada vez. Su pariente peek es la versión para pipelines: ejecuta un efecto secundario por cada elemento de un Iterable conforme se va tirando de él. Para tener un «logger» reutilizable y currificado, cierras tú mismo sobre f: (v) => tap(f, v), como se ve abajo.

Demo 1 · Fundamentos

Demo 2 · Registrar dentro de un pipe

Cerrar sobre tap te da un «logger» currificado y reutilizable que puedes soltar en una cadena pipe para inspeccionar valores intermedios sin alterar el flujo de datos:

Pruébalo tú

Ejercicio: usa tap para imprimir cada valor a su paso por el callback de map, antes de que se multiplique por 10.

Relacionado: peek — la versión de tap para pipelines · pipe1 / pipe — compón un valor a través de funciones · identity — deja pasar sin ningún efecto secundario · apply — invoca una función con una lista dinámica de argumentos