minBy
El elemento cuya clave es la más pequeña — una sola pasada, sin ordenar, null cuando está vacío.
A? minBy<A>(Object? Function(A a) f, Iterable<A> iterable)
Future<A?> minByAsync<A>(Object? Function(A a) f, FxAsyncIterable<A> iterable)
T? Fx<T>.minBy(Object? Function(T a) f) // chain (sync)
Future<T?> FxAsync<T>.minBy(Object? Function(T a) f) // chain (async)
Lección
minBy es la imagen especular de
maxBy: devuelve el
elemento con la clave más pequeña tras una única pasada O(n),
mientras que sortBy(key).head() ordenaría el pipeline entero
solo para leer un valor.
El contrato coincide exactamente con el de maxBy: las claves
se comparan como en sortBy
(Comparable.compare), los empates los gana el
primer elemento encontrado, y un pipeline vacío devuelve
null — no infinity, que es lo que hace el
min numérico, porque aquí no hay
ningún «elemento cero» al que recurrir.
Demo 1 · Fundamentos, caso vacío & empates
Demo 2 · Asíncrono
Pruébalo tú
Ejercicio: encuentra al corredor más rápido con una sola llamada.