countWhere
몇 개나 일치할까요? 한 번의 순회, 숫자 하나 — filter + size를 융합했습니다.
int countWhere<A>(bool Function(A a) f, Iterable<A> iterable)
Future<int> countWhereAsync<A>(FutureOr<bool> Function(A a) f, FxAsyncIterable<A> iterable)
int Fx<T>.countWhere(bool Function(T a) f) // chain (sync)
Future<int> FxAsync<T>.countWhere(FutureOr<bool> Function(T a) f) // chain (async)
강의
"이 중 몇 개가 연체 / 세일 중 / 짝수인가?"는 자꾸
filter(pred).size()로 쓰이곤 했습니다 — 개념상 폴드
하나인 것에 체인 두 단계와 지연 중간 단계라니요.
countWhere(pred)가 바로 그 폴드입니다. 파이프라인을 한 번
순회하며 일치할 때마다 증가시키고 개수를 반환합니다. 도중에 아무것도
구체화되지 않습니다.
countBy는 키별
개수(개수의 맵)가 필요할 때, countWhere는 조건 하나의
개수가 답의 전부일 때 잡으세요. 비동기 쌍둥이는
다른 모든 *Async 연산자처럼 원소마다 조건을 await합니다.
Dart 고유의 추가 기능입니다 — Kotlin count { }의
형태입니다.
데모 1 · 조건 하나, 숫자 하나
데모 2 · 비동기
직접 해 보기
연습: filter 없이 대체 가격 사용 횟수를 세어 보세요.