Iterable.forEach în Dart

Apelează o funcție pentru fiecare element, în ordine.

Sintaxă
void forEach(void action(E element))

Ce face Iterable.forEach

forEach rulează funcția primită pentru fiecare element. Nu returnează nimic; este folosit pentru efecte, de exemplu afișare sau adunare într-o variabilă.

În majoritatea cazurilor o buclă for (final x in lista) este mai clară și permite break, continue și await. forEach este comod când ai deja o funcție gata făcută, de exemplu lista.forEach(print).

Parametri

Parametru Descriere
action Funcția apelată cu fiecare element.

Ce returnează

Nimic (void).

Exemple

Exemplul 1: Afișare cu forEach și cu o funcție existentă

void main() {
  final cumparaturi = ['pâine', 'lapte', 'ouă'];
  cumparaturi.forEach(print);

  var total = 0.0;
  [4.5, 7.2, 12.0].forEach((pret) => total += pret);
  print('Total: ${total.toStringAsFixed(2)} lei');
}

Rezultat

pâine
lapte
ouă
Total: 23.70 lei

Exemplul 2: Varianta cu for-in, care permite break

Din forEach nu poți ieși mai devreme; cu for-in poți.

void main() {
  final temperaturi = [12, 15, 31, 18, 33];
  for (final t in temperaturi) {
    if (t > 30) {
      print('Caniculă: $t °C, mă opresc');
      break;
    }
    print('ok: $t °C');
  }
}

Rezultat

ok: 12 °C
ok: 15 °C
Caniculă: 31 °C, mă opresc

Greșeli frecvente

  • Scrii lista.forEach((x) async { await ... }) și te aștepți ca operațiile să ruleze pe rând. forEach nu așteaptă funcțiile async; folosește for-in cu await sau Future.forEach.
  • Încerci return din funcția dată lui forEach ca să oprești bucla. return iese doar din apelul curent, iar bucla continuă.

Comenzi înrudite

  • Iterable.map: Transformă fiecare element cu o funcție și returnează un iterable nou, leneș, cu rezultatele.
  • Map.forEach: Cheamă o funcție pentru fiecare pereche cheie–valoare din map, în ordinea din map.
  • Future.forEach: forEach rulează o acțiune asincronă pe rând pentru fiecare element; doWhile repetă o acțiune cât timp returnează true.
  • Stream.forEach: Cheamă o funcție pentru fiecare valoare din stream și dă un Future care se termină la închiderea stream-ului.