firstOrNull
이터러블의 첫 원소를 반환하며, 비어 있으면 null을 반환합니다.
강의
firstOrNull은 이터러블의 맨 앞에서 원소를 정확히 하나만
끌어와 돌려줍니다 — 원소가 없다면 null입니다.
firstOrNull은 Dart다운 이름이고
(Iterable.firstOrNull과 짝을 이룹니다), fxdart는 FxTS식
표기인 head도 함께 받아들입니다 — 둘은 같은 연산자입니다.
FxTS의 head는 빈 배열에 undefined를 반환하지만
Dart에는 undefined가 없기 때문에, API의 이 영역에서
"없을 수도 있는" 결과는 전부 null로 수렴합니다. 따라서
자연스러운 사용 방식은 firstOrNull(list) ?? fallback입니다.
firstOrNull은 moveNext()를 한 번만 호출하므로,
아주 크거나 심지어 무한한 지연 파이프라인 위에서 호출해도 비용이 거의
들지 않습니다. 필요한 원소 하나를 넘어서는 상류 작업은 전혀 실행되지
않습니다.
data-first 형태(firstOrNull(iterable))와
FxAsyncIterable을 위한 비동기 형태로 제공됩니다. 동기
체인에서 fx(iterable).firstOrNull은 Iterable에서
물려받은 게터라 괄호가 없고, 비동기 체인에서는 메서드
.firstOrNull()입니다.
데모 1 · 기본
빈 값이 들어가면 null이 나옵니다 — 예외도, orElse 콜백도 필요 없습니다.
데모 2 · 지연 평가와 비동기 단락
아래의 100만 개짜리 범위에서도 끌어당겨지는 원소는 단 하나뿐입니다.
비동기 예제에서는 체인이 첫 번째 delay(...)만
기다리고 두 번째는 거들떠보지도 않습니다.
직접 해 보기
연습: firstOrNull을 사용해 첫 번째 점수를 출력하되, 리스트가
비어 있으면 0이 출력되게 해 보세요.