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 · 비동기

직접 해 보기

연습: 리스트에서 짝수만 골라 더해 보세요.

관련 항목: average — 합을 개수로 나눈 값 · fold — sum이 특수화한 일반형 · min · max — 나머지 숫자 종결 연산자