elementAtOrNull

Devuelve el elemento que está en un índice dado, o null si el índice queda fuera de rango.

A? elementAtOrNull<A>(int index, Iterable<A> iterable) Future<A?> elementAtOrNullAsync<A>(int index, FxAsyncIterable<A> iterable) T? Fx.elementAtOrNull(int index) // sync chain: inherited Iterable method A? nth<A>(int index, Iterable<A> iterable) // FxTS alias

Lección

elementAtOrNull recorre el iterable y se detiene en cuanto llega a index, así que nunca consume más de index + 1 elementos — barato incluso sobre una secuencia perezosa enorme, y mucho más barato que materializarla entera solo para indexar en una List. elementAtOrNull es el nombre idiomático en Dart (refleja Iterable.elementAtOrNull); fxdart también acepta la grafía de FxTS nth — son el mismo operador. Un índice negativo, o uno más allá del final, simplemente da null; a diferencia de la indexación de arrays de algunos lenguajes, aquí los índices no dan la vuelta para contar desde el final — el índice tiene que ser una posición válida y no negativa.

En la cadena síncrona, fx(iterable).elementAtOrNull(index) es el método heredado de Iterable: llámalo directamente sobre cualquier cadena Fx, ya que Fx es un Iterable. Para un FxAsyncIterable, usa la función de nivel superior elementAtOrNullAsync(index, iterable).

Demo 1 · Fundamentos

Demo 2 · Pereza & async

Pedir el índice 3 solo consume 4 elementos del rango de un millón — demostrado con un contador de peek:

Pruébalo tú

Ejercicio: usa elementAtOrNull para imprimir al medallista de plata (índice 1), o 'unclaimed'.

Relacionado: head — atajo para elementAtOrNull(0, ...) · last — el último elemento · find — localiza por predicado en vez de por índice · slice — extrae un rango entero