reduceLazy

fold의 시드와 결합 함수를 커링해 재사용 가능한 리듀서 함수로 만들어 줍니다.

Acc Function(Iterable<A>) reduceLazy<A, Acc>(Acc Function(Acc acc, A a) f, Acc seed)

강의

reduceLazy는 스스로 무언가를 접지 않습니다 — 리듀서를 만들어 냅니다. 결합 함수와 시드를 건네면 Iterable<A> Function 타입의 평범한 함수가 돌아오고, 시드와 결합 함수를 매번 다시 적지 않고도 원하는 만큼 여러 번, 서로 다른 이터러블에 얼마든지 호출할 수 있습니다.

내부적으로는 fold를 감싼 얇은 껍데기일 뿐입니다. reduceLazy(f, seed)(iterable) => fold(seed, f, iterable)을 반환합니다. fold와 비교하면 인자 순서가 뒤집혀 있다는 점에 주목하세요 — 여기서는 (f, seed)인데, 이터러블을 일부러 나중으로 미뤄 두는 FxTS의 커링 스타일을 따른 것입니다.

이것은 (여기서 더 커링되지 않는) 평범한 Dart 함수라서 Fx 체인 메서드나 *Async 대응 함수는 없습니다 — 다만 반환된 함수는 Iterable<A>를 구현한 것이면 무엇이든 받으며, 여기에는 Fx<A>도 포함됩니다. 즉 체인의 .to(...)에 그대로 넣을 수 있습니다.

데모 1 · 재사용 가능한 합산기

데모 2 · 서로 다른 리스트에 재사용하기

"어떻게 결합할지"를 한 번만 정의해 두고 어디서나 재사용하는 것이 핵심입니다:

직접 해 보기

연습: reduceLazy최댓값을 찾는 재사용 가능한 리듀서를 만들어 보세요.

관련 항목: fold — 이 함수가 감싸는 시드 있는 리듀서 · reduce — 시드 없는 종결 연산자 · pipe — 이런 함수들을 파이프라인으로 조합 · memoize — 재사용 가능한 함수를 만드는 또 다른 방법