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 · 비동기 키
직접 해 보기
연습: 긴 단어들의 길이를 한 번의 호출로 합산해 보세요.