sum
지연 파이프라인이 만들어 내는 모든 숫자를 더합니다.
num sum(Iterable<num> iterable)
Future<num> sumAsync(FxAsyncIterable<num> iterable)
num Fx<num>.sum() // chain (sync)
Future<num> FxAsync<num>.sum() // chain (async)
강의
sum은 종결 연산자이며, 라이브러리에서 특수화된 fold 중
가장 단순한 축에 속합니다. 내부적으로는 말 그대로
fold(0, (a, b) => a + b, iterable)입니다. 다른 종결
연산자와 마찬가지로 호출하는 순간 상류의 지연 파이프라인 전체를
끌어당깁니다 — 그래서 map/filter 단계를
아무리 길게 엮어도 sum이 실제로 필요로 하는 값만큼만
비용을 치릅니다. 물론 여기서는 그게 전부입니다.
시드가 0이므로 빈 이터러블의 합은 0입니다 —
예외도, NaN도 없습니다. 이웃한
min,
max,
average와는 다른 점인데,
이들은 각자 (의외의!) 빈 입력 동작이 따로 있으니 알아 둘 필요가
있습니다.
체인 형태는 확장 메서드
Fx<num>.sum() / FxAsync<num>.sum()으로
제공됩니다 — 체인의 원소 타입이 num(제네릭 공변성 덕분에
int/double도 포함)임이 알려진 뒤에야
나타납니다.
데모 1 · 기본
데모 2 · 비동기
직접 해 보기
연습: 리스트에서 짝수만 골라 더해 보세요.