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로 최댓값을 찾는 재사용 가능한 리듀서를 만들어 보세요.