whereNot

술어가 false를 반환하는 원소만 남깁니다 — where를 거울에 비춘 함수입니다.

Iterable<A> whereNot<A>(bool Function(A a) f, Iterable<A> iterable) FxAsyncIterable<A> whereNotAsync<A>(FutureOr<bool> Function(A a) f, FxAsyncIterable<A> iterable) Fx<T> Fx.whereNot(bool Function(T a) f) // chain FxAsync<T> FxAsync.whereNot(FutureOr<bool> Function(T a) f) Iterable<A> reject<A>(bool Function(A a) f, Iterable<A> iterable) // FxTS alias

강의

whereNotwhere((a) => !f(a), iterable)로 구현되어 있습니다 — 오로지 가독성을 위해 존재합니다. list.whereNot(isInvalid)list.where((a) => !isInvalid(a))보다 훨씬 자연스럽게 읽히고, 술어에 이미 긍정형의 분명한 이름이 붙어 있다면 더욱 그렇습니다. whereNot이 Dart다운 이름이고, fxdart는 FxTS식 표기인 reject도 함께 받습니다 — 같은 연산자입니다. 호출 지점에 부정을 쓰지 않아도 되는 쪽으로 wherewhereNot 중에서 고르면 됩니다.

where의 동작은 그대로 이어집니다. 지연 평가되고, 비동기 형태는 whereAsync의 전용 동시성 경로를 물려받으므로 .concurrent(n)은 실제로 술어 n개를 병렬로 평가하면서도 결과는 원래 순서대로 반환합니다.

데모 1 · 기본

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

직접 해 보기

연습: whereNot으로 'info: ok' 줄을 걸러 내고 에러만 남겨 보세요.

관련 항목: filter — reject가 위임하는 함수 · compact — null만 콕 집어 제거 · uniq — 중복 제거 · concurrent — 병렬 평가