firstWhereOrNull

술어가 true인 첫 번째 원소를 반환하며, 없으면 null을 반환합니다.

A? firstWhereOrNull<A>(bool Function(A a) f, Iterable<A> iterable) Future<A?> firstWhereOrNullAsync<A>(FutureOr<bool> Function(A a) f, FxAsyncIterable<A> iterable) T? Fx.firstWhereOrNull(bool Function(T a) f) // chain Future<T?> FxAsync.firstWhereOrNull(FutureOr<bool> Function(T a) f) // chain A? find<A>(bool Function(A a) f, Iterable<A> iterable) // FxTS alias

강의

firstWhereOrNull은 Dart다운 이름이고, fxdart는 FxTS식 표기인 find도 함께 받습니다 — 같은 연산자입니다. headfilter를 하나로 합친 모습이며 — 실제로 구현도 정확히 그렇습니다: head(filter(f, iterable)). 이 결합 덕분에 지연 평가와 단락 평가가 가능합니다. 원소를 하나씩 끌어와 f로 검사하고, 일치하는 것을 찾는 즉시 멈춥니다. 그보다 뒤에 있는 원소는 전혀 건드리지 않습니다.

head와 마찬가지로, 찾지 못했을 때는 FxTS의 undefined가 아니라 null을 반환합니다. data-first 형태, 비동기 버전, 그리고 동기와 비동기 체인 양쪽의 메서드로 모두 제공됩니다.

데모 1 · 기본

데모 2 · 단락 평가와 비동기

백만 개의 원소 중 단 6개만 검사합니다:

직접 해 보기

연습: firstWhereOrNullqty > 0인 첫 항목을 찾고, 없으면 null을 받아 보세요.

관련 항목: findIndex — 같은 탐색, 위치를 반환 · filter — 첫 번째가 아니라 일치하는 모든 원소 · headfind를 이루는 재료 · matches — 형태 비교용으로 미리 만들어진 술어