Iterable.elementAt în Dart

Returnează elementul de la o poziție; elementAtOrNull returnează null dacă poziția nu există.

Sintaxă
E elementAt(int index)
E? elementAtOrNull(int index)   // Dart 3.0

Ce face Iterable.elementAt

Un Iterable nu are operatorul [], dar are elementAt(i), care returnează elementul de pe poziția i (de la 0). Pe o listă este la fel de rapid ca lista[i]; pe alte iterabile (de exemplu, rezultatul lui where) parcurge elementele de la început până ajunge la poziție.

Dacă poziția nu există, elementAt aruncă RangeError. elementAtOrNull (Dart 3.0) returnează în acest caz null.

Parametri

Parametru Descriere
index Poziția, de la 0.

Ce returnează

Elementul de pe poziție (sau null pentru elementAtOrNull).

Exemple

Exemplul 1: Al doilea elev promovat

void main() {
  final note = {'Ana': 9, 'Mihai': 4, 'Ioana': 8, 'Vlad': 10};
  final promovati = note.keys.where((n) => note[n]! >= 5);
  print(promovati.elementAt(1));
  print(promovati.elementAtOrNull(2));
  print(promovati.elementAtOrNull(7));
}

Rezultat

Ioana
Vlad
null

Exemplul 2: Poziție inexistentă

void main() {
  final zile = {'luni', 'marți', 'miercuri'};
  print(zile.elementAt(2));
  try {
    zile.elementAt(5);
  } on RangeError catch (e) {
    print(e);
  }
}

Rezultat

miercuri
RangeError (index): Index out of range: index should be less than 3: 5

Greșeli frecvente

  • Folosești elementAt(i) într-o buclă pe un iterable leneș: fiecare apel îl parcurge de la început. Transformă-l mai întâi în listă cu toList().

Comenzi înrudite

  • Iterable.first: first și last dau primul și ultimul element; single dă singurul element și verifică faptul că este unul singur.
  • List.operator[]: lista[i] citește elementul de pe poziția i; lista[i] = x îl înlocuiește.
  • Iterable.indexed: Perechi (poziție, element) pentru fiecare element, utile în for-in cu destructurare.
  • Stream.first: first, last, single și elementAt dau un Future cu o anumită valoare din stream: prima, ultima, singura sau a n-a.