Iterator.moveNext în Dart

moveNext trece la elementul următor și spune dacă există; current dă elementul pe care stă iteratorul.

Sintaxă
bool moveNext()
E get current

Ce face Iterator.moveNext

moveNext() mută iteratorul pe elementul următor și returnează true dacă există unul, sau false la final. Trebuie chemat o dată înainte de primul element.

current returnează elementul curent. Este valid doar după un moveNext() care a returnat true. Folosind direct cele două, poți parcurge două colecții în paralel sau poți trata separat primul element.

Ce returnează

moveNext returnează bool; current returnează elementul curent.

Exemple

Exemplul 1: Două colecții în paralel

void main() {
  final nume = ['Ana', 'Mihai', 'Ioana'];
  final note = {10, 8, 9};
  final a = nume.iterator;
  final b = note.iterator;
  while (a.moveNext() && b.moveNext()) {
    print('${a.current}: ${b.current}');
  }
}

Rezultat

Ana: 10
Mihai: 8
Ioana: 9

Exemplul 2: Primul element tratat separat

void main() {
  final cuvinte = ['dart', 'este', 'un', 'limbaj'];
  final it = cuvinte.iterator;
  if (!it.moveNext()) return;
  final buffer = StringBuffer(it.current.toUpperCase());
  while (it.moveNext()) {
    buffer.write(' ${it.current}');
  }
  print(buffer);
}

Rezultat

DART este un limbaj

Greșeli frecvente

  • Chemi moveNext() de două ori în aceeași iterație a buclei și sari peste elemente.

Comenzi înrudite

  • Iterator: Obiectul care parcurge un Iterable pas cu pas; for-in îl folosește în spate prin getter-ul iterator.
  • Iterable: Tipul de bază pentru orice colecție care poate fi parcursă element cu element: List, Set, cheile unui Map.