pluck

이터러블에 든 모든 맵에서 특정 키의 값을 뽑아냅니다 — "이 필드만 주세요"라는 흔한 요구를 한 줄로 해결합니다.

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

강의

pluckmap을 아주 작게 특수화해 이름을 붙인 함수입니다 — 내부는 말 그대로 map((a) => a[key], iterable)입니다. "레코드 목록에서 필드 하나 꺼내기"가 자기 이름을 가질 만큼 자주 등장하고, 호출부에서 일회용 람다보다 읽기 좋기 때문에 존재합니다.

반환 타입이 Iterable<V>가 아니라 Iterable<V?>라는 점에 주목하세요. Map 조회는 키가 있다고 보장할 수 없으므로, 없는 키는 예외를 던지는 대신 결과에서 null이 됩니다. 그 null을 나중에 걷어내야 한다면 compact로 이어 붙이세요.

체인 메서드는 없습니다pluckFx/FxAsync에 붙지 않고, data-first 최상위 함수만 존재합니다. 소스에 직접 호출하거나, 이어서 체인하고 싶다면 결과를 fx(...)/fxAsync(...)로 감싸세요.

데모 1 · 기본 & 없는 키

데모 2 · 비동기, 그리고 동시성

pluckAsyncmapAsync 위에 바로 얹혀 있으므로, 레코드를 먼저 동시에 가져온 뒤 필요한 값을 뽑아내면 됩니다.

직접 해 보기

연습: pluck으로 상품 제목만 모은 리스트를 만들어 보세요.

관련 항목: map — pluck이 특수화한 일반형 · compact — pluck이 만들어 낼 수 있는 null 걷어내기 · prop — 맵 하나를 다루는 pluck의 사촌 · filter — 조건에 맞는 원소만 남기기