ifEmpty
파이프라인이 비어 있는 것으로 판명되면 대체 소스로 전환합니다 — 반복 시점에, 지연 방식으로 결정됩니다.
강의
아무것도 만들지 않을 수도 있는 파이프라인은 보통 우회를
강요합니다. 구체화하고, isEmpty를 검사하고, 분기하는
식입니다. 그러면 체인이 끊기고 — 더 나쁘게는 — 의도한 시점보다 먼저
파이프라인이 실행됩니다. ifEmpty(fallback)은 그 분기를
파이프라인 자체에 접어 넣습니다. 값은 손대지 않고 그대로 통과하며,
소스가 아무것도 내놓지 않은 채 끝났을 때만 대체 이터러블이
이어받습니다. 그 외의 경우에는 대체 함수가 호출조차 되지
않습니다 — 양방향으로 지연 평가됩니다.
defaultIfEmpty(value)는 값 하나짜리 축약형입니다.
자리 표시용 행, 빈 보고서의 0, "결과 없음" 표시 같은
것들입니다. 둘 다 체인의 어느 위치에서든 조합할 수 있는데, 이는
공격적인 필터링 뒤에서 중요해집니다 — 비어 있는지 여부는 원래
소스가 아니라 이 지점에 도달한 것들로 결정되기 때문입니다.
Dart 고유의 추가 기능입니다(FxTS에는 대응물이 없습니다). Rx의
switchIfEmpty / defaultIfEmpty를
따랐습니다. 비동기 형태는 비동기 대체 체인과 Future
기본값을 받으며,
concurrent와 조합됩니다.
데모 1 · 빈 보고서를 위한 기본값
데모 2 · 대체 소스, 그 외에는 손대지 않음
직접 해 보기
연습: 대체 검색어를 갖춘 검색을 만들어 보세요.