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

강의

wheremap과 더불어 가장 기본이 되는 변환 연산자입니다. 술어가 true를 반환한 원소만 남기고 나머지는 버리며, 이 모든 과정은 지연 평가됩니다. 종결 연산자가 값을 끌어당기기 전까지는 아무것도 실행되지 않습니다. where가 Dart다운 이름이고, fxdart는 FxTS식 표기인 filter도 함께 받습니다 — 같은 연산자입니다.

지연 평가되므로 wheretake와 조합하면 take를 충족하는 데 필요한 만큼만 술어가 호출됩니다 — 데모 1을 참고하세요.

whereAsyncmapAsync의 구현을 재사용하지 않고 자체 동시성 구현을 갖고 있습니다. .concurrent(n)을 붙이면 술어 n개가 병렬로 평가되지만, 통과한 원소는 여전히 원래 순서대로 하류로 내보내집니다 — 동시성은 처리량을 바꿀 뿐 결과를 바꾸지 않습니다.

데모 1 · 기본과 지연 평가

데모 2 · 비동기, 그리고 동시성

직접 해 보기

연습: where로 18세 이상만 남겨 보세요.

관련 항목: reject — where의 정반대 · compact — null을 걸러 내기 · map — 남기고 버리는 대신 변환하기 · concurrent — 병렬 평가