contains

이터러블이 어떤 값을 담고 있으면 true를 반환합니다. 비교는 ==로 합니다.

bool Fx.contains(Object? a) // chain — inherited from Iterable (Dart idiom) bool includes<A>(A a, Iterable<A> iterable) // top-level: no `contains` (collides with package:test) Future<bool> includesAsync<A>(A a, FxAsyncIterable<A> iterable) // top-level async

강의

contains는 소속 여부를 검사할 때 쓰는 Dart다운 이름이고, 체인에서는 이미 그 이름을 쓸 수 있습니다. FxIterable에서 .contains()를 물려받으므로 fx(xs).contains(a)가 그대로 동작합니다. 다만 최상위 contains 함수는 없습니다 — 이 이름이 package:test의 matcher와 충돌하기 때문입니다. 그래서 data-first 형태는 FxTS식 표기인 includes(a, iterable)를 유지하며, 이는 말 그대로 iterable.contains(a)입니다. 비동기 버전인 includesAsyncsomeAsync 위에 얹혀 있으며 (술어로 b == a를 씁니다), 덕분에 단락도 그대로 물려받습니다. 일치하는 값을 찾는 순간 소스에서 값을 끌어오는 것을 멈춥니다.

동등성은 Dart의 ==로 확인하므로, 직접 만든 클래스에 operator ==를 재정의해 두었다면 그것을 따릅니다. 원시 타입에만 쓸 수 있는 것이 아닙니다.

데모 1 · 기본

데모 2 · 비동기, 그리고 단락 확인

includesAsync가 멈추기 전까지 원소 5개 중 2개만 소비됩니다:

직접 해 보기

연습: containsrequestId가 허용된 값인지 확인해 보세요.

관련 항목: someincludesAsync의 토대가 되는 함수 · find — 불리언 대신 일치하는 값 자체를 얻기 · findIndex — 대신 위치를 얻기 · isEmpty — 가까운 곳에 있는 또 다른 값 기반 검사