min
파이프라인에서 가장 작은 숫자 — 빈 입력과 NaN 입력에 대한 FxTS의 특이 동작까지 그대로입니다.
num min(Iterable<num> iterable)
Future<num> minAsync(FxAsyncIterable<num> iterable)
num Fx<num>.min() // chain (sync)
Future<num> FxAsync<num>.min() // chain (async)
강의
min은 숫자 전용 종결 연산자이자 fold입니다. 내부적으로는
fold(double.infinity, ..., iterable)로, +infinity에서
시작하는 최솟값과 각 원소를 비교해 나갑니다.
꼭 기억해 둘 동작이 두 가지 있습니다. "안전한" API에 익숙한 사람이라면 놀랄 만한 동작이지만, FxTS를 충실히 옮긴 결과입니다.
-
비어 있는 이터러블은
double.infinity를 반환합니다 —null도, 에러도 아닙니다. 아무것도 그 값을 이기지 못했으니 fold의 시드가 그대로 남은 것뿐입니다. -
이터러블 어디든
NaN이 하나라도 있으면 결과 전체가 오염되어NaN이 됩니다 —NaN과의 비교는 언제나 거짓이므로, 한번 최솟값 자리에 들어오면(또는 후보로 등장하면) 영원히NaN으로 남습니다.
"최솟값, 비어 있으면 null" 같은 의미가 필요하다면 직접
result.isInfinite를 확인하거나,
find /
reduce에 직접 만든 비교 로직을 넘겨 쓰세요.
데모 1 · 기본 사용법, 빈 경우, NaN
데모 2 · 비동기
직접 해 보기
연습: 상품들 중 가장 저렴한 가격을 찾아보세요.