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다운 이름이고,
체인에서는 이미 그 이름을 쓸 수 있습니다. Fx가
Iterable에서 .contains()를 물려받으므로
fx(xs).contains(a)가 그대로 동작합니다. 다만 최상위
contains 함수는 없습니다 — 이 이름이
package:test의 matcher와 충돌하기 때문입니다. 그래서
data-first 형태는 FxTS식 표기인 includes(a, iterable)를
유지하며, 이는 말 그대로 iterable.contains(a)입니다.
비동기 버전인 includesAsync는
someAsync 위에 얹혀 있으며
(술어로 b == a를 씁니다), 덕분에 단락도 그대로
물려받습니다. 일치하는 값을 찾는 순간 소스에서 값을 끌어오는 것을
멈춥니다.
동등성은 Dart의 ==로 확인하므로, 직접 만든 클래스에
operator ==를 재정의해 두었다면 그것을 따릅니다.
원시 타입에만 쓸 수 있는 것이 아닙니다.
데모 1 · 기본
데모 2 · 비동기, 그리고 단락 확인
includesAsync가 멈추기 전까지 원소 5개 중 2개만 소비됩니다:
직접 해 보기
연습: contains로 requestId가 허용된 값인지 확인해 보세요.