sumBy

모든 원소의 키를 더합니다 — map + sum을 한 단계로, 비어 있으면 0입니다.

num sumBy<A>(num Function(A a) f, Iterable<A> iterable) Future<num> sumByAsync<A>(FutureOr<num> Function(A a) f, FxAsyncIterable<A> iterable) num Fx<T>.sumBy(num Function(T a) f) // chain (sync) Future<num> FxAsync<T>.sumBy(FutureOr<num> Function(T a) f) // chain (async)

강의

sumBy는 데이터 파이프라인에서 가장 흔한 두 단계 꼬리 — .map((x) => x.field).sum() — 를 하나의 종결 연산으로 합칩니다. 키를 뽑아내면서 누적 합을 함께 fold하므로 중간 결과가 구체화되지 않고, 의도("이 필드를 합산한다")가 투영 + 집계 두 단계가 아니라 한 번의 호출로 표현됩니다.

동작 규약은 sum과 같습니다. 빈 파이프라인의 합은 0이고, int 키는 정수 연산을 유지하지만 double 키가 하나라도 있으면 합이 double로 승격됩니다.

이것은 Dart 고유의 추가 기능입니다(FxTS는 숫자용 sum만 제공합니다). maxBy / minBy와 같은 계열이며, Kotlin에서는 sumOf라고 부릅니다.

데모 1 · 기본 사용법 & 빈 경우

데모 2 · 비동기 키

직접 해 보기

연습: 긴 단어들의 길이를 한 번의 호출로 합산해 보세요.

관련 항목: sum — 파이프라인이 이미 숫자를 담고 있을 때 · maxBy · minBy — 같은 by-key 계열 · fold — 이 함수가 특수화한 일반형