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 없이 대체 가격 사용 횟수를 세어 보세요.

관련 항목: countBy — 키별 개수 · size/count — 전부 세기 · filter — 일치한 값 자체가 필요할 때