pluck
Extrae el valor de una clave concreta de cada mapa de un iterable — una sola línea para la consulta habitual de «dame solo este campo».
Lección
pluck es una especialización diminuta y con nombre propio de
map — por dentro es literalmente
map((a) => a[key], iterable). Existe porque «sacar un
campo de una lista de registros» es lo bastante frecuente como para
merecer su propio nombre, y en el punto de llamada se lee mejor que una
lambda improvisada.
Fíjate en que el tipo de retorno es Iterable<V?>, no
Iterable<V>: una búsqueda en un Map nunca
puede garantizar que la clave exista, así que una clave ausente pasa a
ser null en el resultado en lugar de lanzar una excepción.
Si luego necesitas descartar esos nulls, encadena con
compact.
No hay método de cadena para pluck en
Fx/FxAsync: solo existe la función data-first
de nivel superior. Llámala directamente sobre tu fuente, o envuelve el
resultado con fx(...)/fxAsync(...) para seguir
encadenando después.
Demo 1 · Fundamentos & claves ausentes
Demo 2 · Asíncrono, con concurrencia
pluckAsync está construido directamente sobre
mapAsync, así que primero obtén los registros de forma
concurrente y luego extrae lo que necesites:
Pruébalo tú
Ejercicio: usa pluck para obtener una lista solo con los
títulos de los productos.