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ă cutoList().
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.