where
술어가 true를 반환한 원소들로 이루어진 지연 이터러블을 반환합니다.
Iterable<A> where<A>(bool Function(A a) f, Iterable<A> iterable)
FxAsyncIterable<A> whereAsync<A>(FutureOr<bool> Function(A a) f, FxAsyncIterable<A> iterable)
Fx<T> Fx.where(bool Function(T a) f) // chain
FxAsync<T> FxAsync.where(FutureOr<bool> Function(T a) f)
Iterable<A> filter<A>(bool Function(A a) f, Iterable<A> iterable) // FxTS alias
강의
where는 map과 더불어 가장 기본이 되는
변환 연산자입니다. 술어가 true를 반환한 원소만 남기고
나머지는 버리며, 이 모든 과정은 지연 평가됩니다. 종결 연산자가 값을
끌어당기기 전까지는 아무것도 실행되지 않습니다. where가
Dart다운 이름이고, fxdart는 FxTS식 표기인 filter도 함께
받습니다 — 같은 연산자입니다.
지연 평가되므로 where를 take와 조합하면
take를 충족하는 데 필요한 만큼만 술어가 호출됩니다 —
데모 1을 참고하세요.
whereAsync는 mapAsync의 구현을 재사용하지 않고
자체 동시성 구현을 갖고 있습니다. .concurrent(n)을 붙이면
술어 n개가 병렬로 평가되지만, 통과한 원소는 여전히 원래
순서대로 하류로 내보내집니다 — 동시성은 처리량을 바꿀 뿐 결과를 바꾸지
않습니다.
데모 1 · 기본과 지연 평가
데모 2 · 비동기, 그리고 동시성
직접 해 보기
연습: where로 18세 이상만 남겨 보세요.