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».

Iterable<V?> pluck<K, V>(K key, Iterable<Map<K, V>> iterable) FxAsyncIterable<V?> pluckAsync<K, V>(K key, FxAsyncIterable<Map<K, V>> iterable)

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.

Relacionado: map — la forma general que pluck especializa · compact — descarta los nulls que pluck puede producir · prop — el primo de pluck para un solo mapa · filter — conserva los elementos que cumplen el predicado