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)
강의
pluck은 map을 아주 작게 특수화해 이름을
붙인 함수입니다 — 내부는 말 그대로
map((a) => a[key], iterable)입니다. "레코드 목록에서
필드 하나 꺼내기"가 자기 이름을 가질 만큼 자주 등장하고, 호출부에서
일회용 람다보다 읽기 좋기 때문에 존재합니다.
반환 타입이 Iterable<V>가 아니라
Iterable<V?>라는 점에 주목하세요.
Map 조회는 키가 있다고 보장할 수 없으므로, 없는 키는
예외를 던지는 대신 결과에서 null이 됩니다. 그 null을
나중에 걷어내야 한다면
compact로 이어 붙이세요.
체인 메서드는 없습니다 — pluck은
Fx/FxAsync에 붙지 않고, data-first 최상위
함수만 존재합니다. 소스에 직접 호출하거나, 이어서 체인하고 싶다면 결과를
fx(...)/fxAsync(...)로 감싸세요.
데모 1 · 기본 & 없는 키
데모 2 · 비동기, 그리고 동시성
pluckAsync는 mapAsync 위에 바로 얹혀
있으므로, 레코드를 먼저 동시에 가져온 뒤 필요한 값을 뽑아내면
됩니다.
직접 해 보기
연습: pluck으로 상품 제목만 모은 리스트를
만들어 보세요.